当前位置: 首页 > 知识库问答 >
问题:

使用Jackson将Json数组映射到POJO

易博文
2023-03-14
[
 [
  1232324343,
  "A",
  "B",
  3333,
  "E"
 ],
 [
  12345424343,
  "N",
  "M",
  3133,
  "R"
 ]
]
ABC abc = new ABC();
ObjectMapper mapper = new ObjectMapper();
JsonNode jsonNode = mapper.readTree(data).get("results");

if (jsonNode.isArray()) {
    for (JsonNode node : jsonNode) {
        String nodeContent = mapper.writeValueAsString(node);
        abc = mapper.readValue(nodeContent,ABC.class);

        System.out.println("Data: " + abc.getA());
    }
}

JSONMappingException:无法反序列化com.demo.json.model.abc实例

编辑:我的POJO如下所示:

class ABC{
    long time;
    String a;
    String b;
    int status;
    String c;
}

有人能提出解决办法吗?

ABC[] abc = mapper.readValue(nodeContent, ABC[].class);
mapper.configure(DeserializationFeature.USE_LONG_FOR_INTS, true);

有人能帮我做这个吗?

共有1个答案

双子民
2023-03-14

可以对此对象使用数组形状。您可以使用JSONFormat注释来完成:

@JsonFormat(shape = Shape.ARRAY)
class ABC {

并将其反序列化:

ABC[] abcs = mapper.readValue(json, ABC[].class);

示例代码可以如下所示:

JsonNode jsonNode = mapper.readTree(json);
if (jsonNode.isArray()) {
    for (JsonNode node : jsonNode) {
        String nodeContent = mapper.writeValueAsString(node);
        ABC abc = mapper.readValue(nodeContent, ABC.class);

        System.out.println("Data: " + abc.getA());
    }
}
JsonNode jsonNode = mapper.readTree(json);
if (jsonNode.isArray()) {
    for (JsonNode node : jsonNode) {
        ABC abc = mapper.convertValue(node, ABC.class);
        System.out.println("Data: " + abc.getA());
    }
}
JsonNode jsonNode = mapper.readTree(json);
ABC[] abc = mapper.convertValue(jsonNode, ABC[].class);
System.out.println(Arrays.toString(abc));
 类似资料:
  • 我使用JAVA jackson将JSON映射到JAVA pojo对象,我的JSON文件是: 在之后,我收到了以下错误消息: 不能反序列化出START_ARRAY令牌 我的POJO课程: 请问,这种JSON格式的正确java POJO是什么?谢谢

  • 假设我有这样的物体 我正在使用RestTemboard类从URL中获取json,如下所示: 之后,我想使用jackson对象映射器将json字符串转换为一个对象 将实体类作为第二个参数传递 问题是我应该如何编写ExampleJson实体来处理get-Showed json?我试过这样上课,但似乎不管用。 我得到了这样一个例外:

  • 我和jackson一起绘制地图,我有点迷茫。我的Json具有以下结构 我确实找到了很多处理数组的教程,但我在第一个标记“d”时就已经失败了。而且根本不需要所有的“_元数据”标记。 我创建了一个包含lastName等属性和一个集合附件的pojo。但我的代码在标记“d”或“_元数据”时总是失败 还有杰克逊的读者 任何提示都将不胜感激。 问候马蒂亚斯

  • 我有一个JSON字符串: ...我试图映射回POJO: 上面的字符串(我正在尝试映射)实际上包含在一个组织中。json。JSONObject,可以通过调用该对象的方法来获取。 我想使用Jackson JSON对象/JSON映射框架来进行此映射,到目前为止,这是我最好的尝试: 我需要地图绘制者: 完全忽略外部的花括号(“”和“”) 如果唯一的方法是调用的方法,那么就这样吧。但我想知道Jackson是

  • 问题内容: 我一直在尝试创建Jersey REST Web服务。我想从Java类接收和发出JSON对象,如下所示: 应该这样将其转换为JSON: 但是,我找不到为此的标准解决方案。似乎每个人都在实现自己的包装器 解决方案。这个要求对我来说似乎是最基本的。我不敢相信这是普遍接受的解决方案,尤其是因为Jersey确实是Java中更有趣的部分之一。 我还尝试了升级到Jackson 1.8,这仅给了我这一

  • 问题内容: 我有以下JSON表示盐请求的服务器响应: 我尝试使用以下POJO映射它: 现在每次我这样做: 该为空。如何使用Gson将JSON映射到POJO?我的变量顺序对Gson映射重要吗? 问题答案: 我的变量顺序对Gson映射重要吗? 不,不是这样。 如何使用Gson将JSON映射到POJO? 它是 区分大小写 和JSON字符串键应该是相同的POJO类使用的变量名。 您可以使用@Seriali