我有一个包含 JSONObjects 的 org.json.JSONArray ,我正在尝试将它们映射到 POJO。我知道我想要映射到的 POJO 的类型。我有两个选择,我正在尝试找出哪个性能更好。
选项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,它将针对每次调用完成。
想法?
Thanks!
我将尝试解释其中的差异以及我面临的问题。我在需要使用的复杂转换中使用了两者。
我的请求的格式如下。
"{Key=a1, type=ABC}"
我想将其转换为某个类的 (A1) 实例。
class A1 {
private String key;
private String type;
}
很明显,键不是字符串(即没有用双引号括起来)
使用mapper.readValue
我会收到如下错误:
com.fasterxml.jackson.core.JsonParseException: Unexpected character ('k' (code 115)): was expecting double-quote to start field name
使用mapper.convertValue
我将根据需要获得 A1 的实例。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)