繁体   English   中英

杰克逊POJO映射

[英]Jackson POJO mapping

我试图通过杰克逊将以下json映射到pojo。 我有第一部分工作(直到部分)。 然而,第二部分我不知道如何将“section1”映射到也许是一个包含的pojo或最佳实践?

json通过休息电话收到:

{
   "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
         }
      ]
   }
}

POJO:

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.


}

如果每个部分(和每个垃圾片段)的内容在内部具有相同的结构,则将'section'设为另一个类,并且还为'junk'。

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;
}

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

另外,地图不是存储两个随机字符串的好地方。 但杰克逊会允许它。 唯一的例外是如果字段的名称将从'junk1'和'junk2'变化。 否则只需使用一个包含两个字符串的类。

请注意,您可以指出应忽略“垃圾”。 有几种方法可以做到; 一个是做:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM