java – 使用Jackson对数组进行反序列化
发布时间:2020-12-14 05:54:41 所属栏目:Java 来源:网络整理
导读:我有像 JSON-RPC客户端,我无法反序列化 将json字符串传入我的java对象. 传入的json格式为: {"value":"xxxx","type":"xxxx"} 我想要反序列化的对象: @JsonAutoDetect@JsonDeserialize()public class ReturnValue {private Object value;private String type
我有像
JSON-RPC客户端,我无法反序列化
将json字符串传入我的java对象. 传入的json格式为: {"value":"xxxx","type":"xxxx"} 我想要反序列化的对象: @JsonAutoDetect @JsonDeserialize() public class ReturnValue { private Object value; private String type; @JsonCreator public ReturnValue(@JsonProperty("value") String val,@JsonProperty("type") String type) { value = val; this.type = type; } ...getters,setters... 这似乎工作正常,如果值是String,但如果它是数组类型,它会抛出 {"value":[8,10],"type":"[int]"} 代码是: int[] arr = (int[])getReturnValue(jsonString).getValue(); 其中getReturnValue并不特别: ObjectMapper om = new ObjectMapper(); ReturnValue rv = null; rv = om.readValue(json,ReturnValue.class); return rv; 另一个问题是我希望type属性是Class类型,但这会抛出 解决方法
将构造函数更改为:
@JsonCreator public ReturnValue(@JsonProperty("value") Object val,@JsonProperty("type") String type) { 因为,就像错误指出的那样,它不知道如何从数组中生成一个String.但是String和JSON Array都可以转换为Object;如果是这样,它将是Java String,或Java List(用于JSON数组),或Java Map(用于JSON对象). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |