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

Jackson-POJO映射

杜翰林
2023-03-14

我试图通过jackson将以下json映射到pojo。我让第一部分工作(直到第节)。然而,第二部分我不确定如何将“section1”映射到这里可能包含的pojo或最佳实践?

Json通过Rest电话收到:

{
   "val1":100,
   "val2":2.75,
   "junk":[
      {
         "junk1":36,
         "junk2":78
      },
      {
         "junk1":36,
         "junk2":78
      }
   ],
   "section1":{     // <- There will be another section2, section3,...
      "val1":100,
      "val2":2.75,
      "junk1":[
         {
            "junk1":36,
            "junk2":78
         },
         {
            "junk1":36,
            "junk2":78
         }
      ],
      "junk2":[
         {
            "junk1":36,
            "junk2":78
         },
         {
            "junk1":36,
            "junk2":78
         }
      ]
   }
}

波乔:

public class view
{
    private int val1;
    private float val2;
    private List<Map<String, String> > junk; //<-Ok as I just pass to another class

        // How to store "section" ... and want to keep junk1, junk2 same
        // placeholder like I have for junk in main section above.


}

共有2个答案

岳英锐
2023-03-14

请注意,您可以指出“垃圾”应该被忽略。有两种方法可以做到这一点;一是:

@JsonIgnoreProperties({"junk"})
public class MyClass { ... }

这样做的好处是不需要内存来存储匹配的数据;它可以加快解析速度(不是一吨,而是一些;解析器仍然需要解码JSON来跳过它等)。

宇文鸿畴
2023-03-14

如果每个节的内容(和每件垃圾)内部具有相同的结构,则使“节”成为另一个类,也使“垃圾”成为“垃圾”。

public class view
{
    private int val1;
    private float val2;
    private List<Junk> junk; //<-Ok as I just pass to another class
    private Section section1;
    private Section section2;
    ... etc ...
}

public class Section {
   private int val1;
    private float val2;
    private List<Junk> junk; //<-Ok as I just pass to another class
}

public class Junk {
   private String junk1;
   private Strign junk2;
}

我假设你展示的是一个结构,而不是一系列的部分。

另外,map并不是存储两个随机字符串的好地方。但是Jackson会允许这样做的。唯一的例外是字段的名称会从“Junk1”和“Junk2”不同。否则就使用一个包含两个字符串的类。

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

  • 我使用JAVA jackson将JSON映射到JAVA pojo对象,我的JSON文件是: 在之后,我收到了以下错误消息: 不能反序列化出START_ARRAY令牌 我的POJO课程: 请问,这种JSON格式的正确java POJO是什么?谢谢

  • JSONMappingException:无法反序列化com.demo.json.model.abc实例 编辑:我的POJO如下所示: 有人能提出解决办法吗? 有人能帮我做这个吗?

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

  • 我正在使用Jackson的XML绑定,通过到Java POJO的初始映射,将XML转换为Java列表。我所写的作品,但我不认为我使用杰克逊正确。 这实际上是工作,因为我需要它的工作。我得到了一个Groups类,其中有一个用我期望的元素填充的列表。我在想,方法是正确的吗?我不喜欢我有一个二传手做一个添加,但我所尝试的一切都不起作用。

  • 对于这个来自RestTemplate的JSON响应,我如何构造Java POJO来映射包括键(即时间戳'1580845128000')在内的所有字段。 当前我有ResponseEntity result=restTemplate.exchange(uri,HttpMethod.Get,entity,String.class);