【发布时间】:2014-02-21 21:22:06
【问题描述】:
我有一个包含 JSONObjects 的 org.json.JSONArray,我正在尝试将它们映射到 POJO。我知道要映射到的 POJO 的类型。我有 2 个选项,我正在尝试找出性能更好的选项。
选项 1:
ObjectMapper mapper = new ObjectMapper();
ObjectReader reader = mapper.reader().withType(MyPojo.class);
for (int i = 0; i < jsonArr.length(); i++) {
JSONObject obj = jsonArr.getJSONObject(i);
MyPojo pojo = reader.readValue(obj.toString());
... other code dealing with pojo...
}
选项 2:
ObjectReader mapper = new ObjectMapper();
for (int i = 0; i < jsonArr.length(); i++) {
JSONObject obj = jsonArr.getJSONObject(i);
MyPojo pojo = mapper.convertvalue(obj, MyPojo.class);
... other code dealing with pojo...
}
为了论证,我们假设 JSONArray 的长度是 100。
从我目前看到的源代码来看,选项 1 似乎更好,因为反序列化上下文和反序列化器只创建一次,而在选项 2 的情况下,每次调用都会完成。
想法?
谢谢!
【问题讨论】:
-
请修复您的第二个代码 sn-p 以便它编译。我想弄清楚你在问什么。
-
请用您的发现更新此帖子,以便对其他人有所帮助。
-
我的配音和你一样。我在 stackOverFlow 上找到了这个,可能会有所帮助:stackoverflow.com/questions/10113512/…
-
第二个 sn-p 可能会导致错误,因为
org.json.JSONObject的内部结构与 JSON 的结构不同。
标签: java serialization jackson deserialization json-deserialization