Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jackson将变量反序列化为Json字符串_Java_Json_Deserialization_Jackson - Fatal编程技术网

Java Jackson将变量反序列化为Json字符串

Java Jackson将变量反序列化为Json字符串,java,json,deserialization,jackson,Java,Json,Deserialization,Jackson,我有一个这样的模型: private String message; private Integer errorCode; private String data; 例如,我从远程获取以下JSON: {"data": {"cat": "1.2.3.4", "ner": "80", "name": "pinta" }, "message" : "m", "errorCode" : 12} 当我反序列化这个JSON时,消息和errorCode变量会得到正确的值。但是,我不希望对数据变量的

我有一个这样的模型:

private String message;
private Integer errorCode;    
private String data;
例如,我从远程获取以下JSON:

{"data": {"cat": "1.2.3.4", "ner": "80", "name": "pinta" }, "message" : "m", "errorCode" : 12}
当我反序列化这个JSON时,
消息
errorCode
变量会得到正确的值。但是,我不希望对
数据
变量的内容进行解释。相反,我希望它是以下字符串:

{"cat": "1.2.3.4", "ner": "80", "name": "pinta" }
之后,我将亲自解释。如何获取
数据的此值?

是为原始问题中描述的所需功能创建的。如果你想实现它,就投票支持它

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


此外,该线程还涵盖了这个主题。

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

你能说得更清楚吗?@MByD在反序列化后调试变量时,我希望看到我的数据变量具有该值:
{“cat”:“1.2.3.4”,“ner”:“80”,“name”:“pinta”}
,因为我是这样发送的:
“data”:{“cat”:“1.2.3.4”,“ner”:“80”,“name”:“pinta”}
这个问题不是重复的。这个问题是一个反序列化问题,寻找
@JsonRawValue
,而另一个问题已经知道
@JsonRawValue
,只是想知道为什么它在序列化过程中不起作用。感谢您的回答和投票。我只想说清楚:我使用的是
myObject=mapper.readValue(data,clz)transferredObject=mapper.convertValue(数据,clz)之间的区别是什么?readValue()解析来自给定源的内容,而convertValue()相当于写入值,将其作为给定类型读回——它可以将可以序列化为JSON的任何内容转换为可以从JSON绑定的任何内容。+1是此问题的最佳答案。将类型保留为JsonNode使其能够调用toString()并获取字符串json值。当然,它首先被反序列化,然后再次序列化,这有点浪费,但到目前为止,当期望对象列表成功而对象列表出错时,这是唯一一种做得好且干净的方法fail@Rasive不需要在这两者之间进行序列化:
convertValue()
实际上避免了这一步,仅创建要重新处理的令牌流。这可以用任何对象模型来完成,但是
JsonNode
通常是最自然的。