Jackson将变量反序列化为Json String

时间:2011-11-15 13:28:32

标签: java json deserialization jackson

我有一个这样的模型:

private String message;
private Integer errorCode;    
private String data;

我从远程和消息中获取JSON字符串,errorCode变量获取正确的值。但是我不想反序列化到我的数据变量。我希望它像json字符串一样:

{"cat": "1.2.3.4", "ner": "80", "name": "pinta" }
之后,我将反序列化它以反对自己。我怎么能这样做?

PS:澄清问题:

我得到一个类似的Json字符串:

{“data”:{“cat”:“1.2.3.4”,“ner”:“80”,“name”:“pinta”},“message”:“m”,“errorCode”:12}

反序列化后,我的变量应具有以下值:

message => "m"
errorCode => 12
data => "{"cat": "1.2.3.4", "ner": "80", "name": "pinta" }"

2 个答案:

答案 0 :(得分:10)

我宁愿建议你让数据绑定到一个中间对象;通常这是java.util.Maporg.codehaus.jackson.JsonNode(JSON树)。然后您可以以任何方式访问数据;包括使用ObjectMapper.convertValue(inputPojo, outputType))轻松转换为POJO。

答案 1 :(得分:8)

Jackson issue 596是为原始问题中描述的所需功能而创建的。如果您希望实施它,请投票支持。

目前可用的解决方案是实现自定义反序列化处理。

此外,How can I include raw JSON in an object using Jackson?主题涵盖了此主题。