我对泛型是个新手。
public class Message {
private MessageBody messageBody;
....
}
public class MessageBody {
private List<BodyParam> bodyParams;
}
public class MessageBodyParam {
private String name;
private Object value;
}
public class JsonUtil {
//This is not working
public static <T> String marshal(Object object, Class<T> jtype) {
Gson gson = new Gson();
Type type = new TypeToken<T>() {}.getType();
return gson.toJson(object, type);
}
//this is working as expected
public static <T> T unmarshal(String jsonStr, Class<T> jtype) {
Gson gson = new Gson();
Type type = new TypeToken<T>() {}.getType();
return gson.fromJson(jsonStr, type);
}
}
//Message is my class
String jsonMessage = JsonUtil.marshal(message, Message.class);
Message message = JsonUtil.unmarshal(message, Message.class);
为时已晚,但这个解决方案可以为gson创建一个泛型类:
public class JSONConversion<T>{
private T t;
public T getT() {
return t;
}
public void setT(T t) {
this.t = t;
}
public String ObjectToString(){
Gson gson=new Gson();
return gson.toJson(t);
}
public T StringToObject(String jsonString ,Class<T> tt){
Gson gson=new Gson();
return gson.fromJson(jsonString, tt);
}
}
您可以像这样使用这个泛型gson类:
LoginResponse loginResponse = response.body();
JSONConversion<LoginResponse> jsonConversion=new JSONConversion<>();
jsonConversion.setT(loginResponse);
String createdJson=jsonConversion.ObjectToString());
Log.d("toJson",createdJson);
LoginResponse convertedObject=jsonConversion.StringToObject(createdJson,LoginResponse.class);
null 杰克逊在默认情况下有能力做到这一点。
我正在尝试使用JAXB进行封送处理。 我的输出是这样的: ...但我需要这样的输出: 如果取消对代码的注释,则会得到。没有它,我可以编译,但我不能得到所需的精确输出。 我的豆子长这样: 适配器类
我有以下类型,在架构中定义为: 生成的JAXB类: 使用此类型的一些JAXB类: 当我将此XML解组为JAXB对象时: 这份名单从何而来?info_analytics映射到没有任何集合/数组的类型。 如果我得到这个JSON,umarshall将其转换为JAXB对象,marshall转换为XML,它将生成: 为什么元素作为属性重复? XML:
我正在尝试封送和取消封送映射到值对/从值对。我可以成功封送该对象,但是,我不能从XML中取消封送它。反封送结果是映射中存在的关键字,但其值为空。 下面是我要封送和取消封送的模型: 而且我还发现了一个关于这个问题的类似问题“JAXB:如何将映射编入 value ”,然而,它并没有解决解编组问题?
基本上,我要做的是创建一个封送器,它可以接收我给它的任何类对象,例如,car对象或person对象,并且它必须返回一个XML字符串。 警告:发生了非法的反射访问操作
我有一个遗留web服务项目,它接收两个不同的XML模式,但属性名称相同(包括根元素)。我正在使用Spring、OXM和JAXB2进行编组/解组。 我已经用另一个问题解决了前面的一个问题,所以我使用SAX解析器来确定使用哪一个解组器。解析XML时,我检查一个值,然后就可以使用反编组器或其他反编组器。 我如何将其转换为更Spring(OXM)的方法呢?