构建复杂的JSON负载从Java类

huangapple 未分类评论43阅读模式
英文:

Build Complex JSON payload from java classes

问题

以下是从Java类创建的JSON负载,只有一个条件,即Subgroup1可以为null,意味着组可能有也可能没有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;
}
英文:

I would like to create following json payload from the java classes. Only one condition is there, Subgroup1 can be null, meaning group may/may not have subgroup1. Not sure how can it be done. Any help would be highly appreciated. Thanks in advance! I can change the classes if needed.

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

I have 3 different java classes to map objects.

Data.class

public class Data {

	private Long id;
	private String name;
	private List&lt;Subgroup1&gt; children;
}

Subgroup1.class

public class Subgroup1 {

	private Long id;
	private String name;
	private List&lt;Subgroup2&gt; children;
}

Subgroup2.class

public class Subgroup2 {

	private Long id;
	private String name;

}

答案1

得分: 0

创建如下的类结构

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));
英文:

Create Classes structure as below:

public class MainClass {

private List&lt;Datum&gt; data;

}


public class Datum {

private List&lt;Child&gt; children;
private String id;
private String name;

}

public class Child {

private List&lt;Child&gt; children;
private String id;
private String name;

}

below format you can use in Java, its just a way you can do it in multiples way, as i have expained in a easy way.

    MainClass mainClass = new MainClass();
    
    List&lt;Child&gt; level2List = new ArrayList&lt;&gt;();
    Child level2Child = new Child();
    level2Child.setName(&quot;opl&quot;);
    level2Child.setId(&quot;1&quot;);
    level2List.add(level2Child);


    List&lt;Child&gt; childList = new ArrayList&lt;&gt;();
    Child child = new Child();
    child.setChildren(level2List);
    child.setId(&quot;1&quot;);
    child.setName(&quot;xyz&quot;);
    childList.add(child);


    Datum datum = new Datum();
    datum.setChildren(childList);
    datum.setId(&quot;1&quot;);
    datum.setName(&quot;ab&quot;);

    List&lt;Datum&gt; datumList = new ArrayList&lt;&gt;();
    datumList.add(datum);
    mainClass.setData(datumList);
    System.out.println(new Gson().toJson(mainClass));

huangapple
  • 本文由 发表于 2020年7月25日 04:15:32
  • 转载请务必保留本文链接:https://java.coder-hub.com/63080851.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定