JSONArray到对象列表

时间:2018-12-07 22:13:06

标签: java arrays json

我有JSONArray,其中数组中的每个元素都是具有5个字段的json。

我想将此JSONArray映射到Class对象的列表。每个Class对象具有与json元素完全相同的字段,另外还有3个其他的Class字段,当从json元素映射对象时,我希望将其设置为null。

我尝试过:

JSONObject jsn = SomeJsonWith2Keys      
JSONArray jsn_a = (JSONArray) jsn.get("response");
List<MyClass> tags = (List<MyClass>) objectMapper.readValue(jsn_a.toString(), MyClass.class)

但是这引发了异常 无法从START_ARRAY令牌中反序列化x.x.x.x.MyClass的实例

数组很大,如果可能的话,我试图不做循环映射。

对于将三个附加字段设置为null时如何映射到类的建议,我将不胜感激

谢谢

1 个答案:

答案 0 :(得分:0)

您需要将类型指定为List而不是MyClass。您不能只说List.class来做到这一点,但是Jackson提供了com.fasterxml.jackson.core.type.TypeReference类,该类使您可以提供想要的特定类型列表的事实。

因此,假设您的对象映射器是杰克逊,则可以执行以下操作。

List<MyClass> tags = mapper.readValue(jsn_a.toString(), new TypeReference<List<MyClass>>() {});

如果可以使用数组而不是列表,则可以指定数组类型。

MyClass[] tags = mapper.readValue(jsn_a.toString(), MyClass[].class);