创建未定义内容的json对象

时间:2016-07-20 01:51:17

标签: java json jackson

我正在使用一个现有的API,它希望将“元数据”字段作为其json有效负载的一部分。 “Metadata”字段是一个完全自由格式的json对象。目前,我需要阅读从其他来源提供的这些数据,做一些丰富,然后传递它。我正在努力如何定义这个“元数据”对象,以便它可以是任何有效的json对象。或者,如果没有提供该字段,则为空的json对象。

我试图像这样使用org.json.JSONObject。

//meta is the json string read from the db
JSONObject jsonobject = new JSONObject(meta);
message.Metadata = jsonobject;

然而,杰克逊并没有出乎意料地引发了序列化错误:

com.fasterxml.jackson.databind.JsonMappingException: No serializer found for class org.json.JSONObject and no properties discovered...

这是一个关键要求,我猜我错过了一些相对明显的解决方案。任何帮助将不胜感激。

UPDATED FIX

正如@shmosel所建议的那样,我只是将json对象切换为com.fasterxml.jackson.databind.JsonNode,所有这些都可以很好地工作。

//工作代码(当然粗糙)
ObjectMapper mapper = new ObjectMapper();

JsonNode rootNode = null;
try {
       rootNode = mapper.readTree(meta);
    } catch (IOException e) {
       e.printStackTrace();
    }

message.Metadata = rootNode;

0 个答案:

没有答案