我正在使用第 3 方库来检索 JSON 格式的数据。图书馆以 org.json.JSONObject
的形式向我提供数据。我想将此 JSONObject
映射到 POJO(普通旧 Java 对象) 以简化访问/代码。
对于映射,我目前以这种方式使用 Jackson 库中的 ObjectMapper
:
JSONObject jsonObject = //...
ObjectMapper mapper = new ObjectMapper();
MyPojoClass myPojo = mapper.readValue(jsonObject.toString(), MyPojoClass.class);
据我了解,上面的代码可以得到显着优化,因为目前 JSONObject
中的数据已经被解析,再次使用 JSONObject.toString()
方法送入序列化-反序列化链然后到 ObjectMapper
。
我想避免这两个转换( toString()
和解析)。有没有办法使用 JSONObject
将其数据直接映射到 POJO?
原文由 Daniel S. 发布,翻译遵循 CC BY-SA 4.0 许可协议
由于您有一些 JSON 数据的抽象表示(
org.json.JSONObject
对象)并且您打算使用 Jackson 库 - 它有自己的 JSON 数据抽象表示(com.fasterxml.jackson.databind.JsonNode
) - 然后从一种表示形式到另一种表示形式的转换将使您免于解析-序列化-解析过程。因此,不是使用接受String
的readValue
方法,而是使用接受JsonParser
: 89-JSON 是一种非常简单的格式,因此手动创建
convertJsonFormat
应该不难。这是我的尝试:请注意,虽然 Jackson 的
JsonNode
可以表示一些额外的类型(例如BigInteger
,Decimal
不是上面代码所必需的所有内容,等等)JSONObject
可以表示。