【问题标题】:How to write nested JSON using Jackson?如何使用 Jackson 编写嵌套 JSON?
【发布时间】:2017-08-29 06:01:39
【问题描述】:

目前我正在尝试通过 Java 代码自动化 JSON API。我已经成功运行了 JSON 而没有嵌套。现在在我们的 API 中,有嵌套的 JSON,我需要通过 POJO 自动化...我该怎么做它..

一个 API 为我工作,它只有一个参数。

API 的 JSON

{
    "userId": 1

  },

它的 JAVA 类。

   public class Post {

        @JsonProperty("userId")
        private String userId;          
        public String getUserId()
        {
           return userId;
        }

        public void setUserId(String userId) 
        {       
            this.userId = userId;   
        }

 }

现在我有一个包含多个嵌套参数的 API。如何创建相同的 Java 类?

嵌套 JSON

{
    "glossary": {
        "title": "example glossary",
        "GlossDiv": {
            "title": "S",
            "GlossList": {
                "GlossEntry": {
                    "ID": "SGML",
                    "SortAs": "SGML",
                    "GlossTerm": "Standard Generalized Markup Language",
                    "Acronym": "SGML",
                    "Abbrev": "ISO 8879:1986",
                    "GlossDef": {
                        "para": "A meta-markup language, used to create markup languages such as DocBook.",
                        "GlossSeeAlso": ["GML", "XML"]
                    },
                    "GlossSee": "markup"
                }
            }
        }
    }
}

如何为此编写 Java 类?

提前致谢!

【问题讨论】:

    标签: java json rest api jackson


    【解决方案1】:

    使用link 将您的json 转换为java 类,只需在此处粘贴您的json n 下载类结构。

    您可以使用 . (点)运算符

    例如:如果您想从 GlossEntry 访问 ID,请使用以下代码

      ObjectMapper mapper = new ObjectMapper();
      String jsonString="";
      Glossary_ sc=mapper.readValue(jsonString,Glossary_.class);
    
    System.out.println("ID:"+sc.getGlossDiv().getGlossList().getGlossEntry().getID());
    

    【讨论】:

      【解决方案2】:

      您需要使用 Java 类复制 JSON 结构。在你的情况下,它应该是这样的:

      public class Glossary {
             String title;
             GlossDiv glossDiv;
             {getters, setters}
      }
      
      public class GlossDiv {
             String title;
             GlossList glossList;
      
             public getGlossList() {
                   return glossList;
             }
      
             public setGlossList(GlossList glossList) {
                   this.glossList = glossList;
             }
      }
      

      等等,对于每个嵌套对象。

      【讨论】:

      • 您能否只为 1 个类编写 getter 和 setter(说 Glossay?)。我怀疑如何为 GlossList 类编写 getter 和 setter?
      • 非常感谢.. 让我开心.. 最后一个问题.. "GlossSeeAlso": ["GML", "XML"] 有 [] 括号怎么办?
      • 您可以将该字段定义为字符串列表,或者您想要存储在其中的任何内容。
      • 抱歉又打断你了..你能举个例子吗?非常感谢您的帮助。
      猜你喜欢
      • 2013-11-19
      • 2023-03-14
      • 2017-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-08
      • 2020-08-05
      • 1970-01-01
      相关资源
      最近更新 更多