【问题标题】:Build Complex JSON payload from java classes从 java 类构建复杂的 JSON 有效负载
【发布时间】:2020-11-14 17:59:08
【问题描述】:

我想从 java 类创建以下 json 有效负载。只有一个条件,Subgroup1 可以为空,这意味着组可能/可能没有 subgroup1。不知道怎么做。任何帮助将不胜感激。提前致谢!如果需要,我可以更改课程。

{
    "data" : [
            {
              "id": "1",
              "name": "ab",
              "children": [
                        {
                          "id": "1",
                          "name": "xyz",
                          "children": [
                                                { "id": "1",
                                                 "name": "opl"
                                                } ] 
                        }
                ]
            },
            {
              "id":" 2",
              "name": "cd",
              "children": [
                    {
                      "id": "1",
                      "name": "ijk",
                      "children": [
                                    { "id": "1",
                                      "name": "rty"},
                                        { "id": "2",
                                          "name": "wsc"
                                        } ]
                    },
                    {
                      "id": "2",
                      "name": "lmn",
                      "children": [
                                        { "id": "1",
                                          "name": "qaz"},
                                        { "id": "2",
                                          "name": "poi"
                                        } ]
                    },
                    {
                      "id": "3",
                      "name": "opq",
                      "children": [
                                        { "id": "1",
                                          "name": "edf"},
                                        { "id": "2",
                                          "name": "bhgga"
                                        } ]
                    }
              ]
            },
            {
              "id": "3",
              "name": "ef",
              "children": [
                      { 
                        "id": null,
                        "name": null,
                        "children": [
                                            { "id": "2",
                                              "name": "ijyuht"
                                        } ]
                        }
                    ]
            }
        ]
  }

我有 3 个不同的 java 类来映射对象。

Data.class

public class Data {

    private Long id;
    private String name;
    private List<Subgroup1> children;
}

Subgroup1.class

public class Subgroup1 {

    private Long id;
    private String name;
    private List<Subgroup2> children;
}

Subgroup2.class

public class Subgroup2 {

    private Long id;
    private String name;

}

【问题讨论】:

    标签: java json spring-boot jsonparser get-mapping


    【解决方案1】:

    创建类结构如下:

    public class MainClass {
    
    private List<Datum> data;
    
    }
    
    
    public class Datum {
    
    private List<Child> children;
    private String id;
    private String name;
    
    }
    
    public class Child {
    
    private List<Child> children;
    private String id;
    private String name;
    
    }
    

    您可以在 Java 中使用以下格式,这只是您可以以多种方式执行此操作的一种方式,因为我已经以一种简单的方式进行了说明。

        MainClass mainClass = new MainClass();
        
        List<Child> level2List = new ArrayList<>();
        Child level2Child = new Child();
        level2Child.setName("opl");
        level2Child.setId("1");
        level2List.add(level2Child);
    
    
        List<Child> childList = new ArrayList<>();
        Child child = new Child();
        child.setChildren(level2List);
        child.setId("1");
        child.setName("xyz");
        childList.add(child);
    
    
        Datum datum = new Datum();
        datum.setChildren(childList);
        datum.setId("1");
        datum.setName("ab");
    
        List<Datum> datumList = new ArrayList<>();
        datumList.add(datum);
        mainClass.setData(datumList);
        System.out.println(new Gson().toJson(mainClass));
    

    【讨论】:

    • 这就是我所做的,我的问题是如何从 java 构建这个 json。 @SushilMittal
    • @Divya 很容易构建你定义的 json,只需根据你的场景设置值,我已经更新了我的答案检查,如果它帮助你标记正确
    • 你的意思是像GSON这样的库吗?
    • 我使用 GSON 只是为了在控制台上将对象打印为 json。
    猜你喜欢
    • 2021-07-23
    • 2020-11-06
    • 2021-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多