使用java创建分层json
我需要制作一个json,如下所示-使用java创建分层json,java,json,Java,Json,我需要制作一个json,如下所示- { "name":"Root", "children":[{ "name":"Mind", "children":[ { "name":"Sea" },{ "name":"water" },{ "name":"Wind" }] },
{
"name":"Root",
"children":[{
"name":"Mind",
"children":[
{
"name":"Sea"
},{
"name":"water"
},{
"name":"Wind"
}]
},{
"name":"Habbit",
"children":[
{"name":"Sea"},
{"name":"water"},
{"name":"Wind"}
]},{
"name":"Culture",
"children":[
{
"name":"Sea"
},{
"name":"water"
},{
"name":"Wind"
}
]}
]
}
但我不能创造它。我创造的是这样的-
{"name":"Root","children":[{"name":"Mind","children":[{"name":"Sea"},{"name":"water"},{"name":"Wind"}]}]}
{"name":"Root","children":[{"name":"Habbit","children":[{"name":"Sea"},{"name":"water"},{"name":"Wind"}]}]}
{"name":"Root","children":[{"name":"Culture","children":[{"name":"Sea"},{"name":"water"},{"name":"Wind"}]}]}
我在下面给出我的代码-
public class Hirarchy {
public static class Entry {
private String name;
public Entry(String name) {
this.name = name;
}
private List<Entry> children;
public void add(Entry node) {
if (children == null)
children = new ArrayList<Entry>();
children.add(node);
}
public static void main(String[] args) {
List<String> listofParent = new ArrayList<String>();
listofParent.add("Mind");
listofParent.add("Habbit");
listofParent.add("Culture");
List<String> listofChild = new ArrayList<String>();
listofChild.add("Sea");
listofChild.add("water");
listofChild.add("Wind");
Entry mainRoot=null;
for (int i = 0; i < listofParent.size(); i++) {
Entry root = new Entry(listofParent.get(i));
mainRoot= aMethod2form(root, listofChild);
Entry e=new Entry("Root");
e.add(mainRoot);
Gson g=new Gson();
System.out.println(g.toJson(e));
}
}
private static Entry aMethod2form(Entry root, List<String> listofChild) {
for(int i=0;i<listofChild.size();i++){
root.add(new Entry(listofChild.get(i)));
}
return root;
}
}
}
public-class-hirachy{
公共静态类条目{
私有字符串名称;
公共条目(字符串名称){
this.name=名称;
}
私人名单儿童;
公共作废添加(条目节点){
if(children==null)
children=newarraylist();
添加(节点);
}
公共静态void main(字符串[]args){
List listofParent=new ArrayList();
添加(“心智”);
添加(“Habbit”);
添加(“文化”);
List listofChild=new ArrayList();
儿童名单。添加(“Sea”);
儿童名单。添加(“水”);
儿童名单。添加(“风”);
条目mainRoot=null;
for(int i=0;i 对于(int i=0;i将gson线路替换为:
Gson gson = new GsonBuilder().setPrettyPrinting().create();
System.out.println(g.toJson(e));
首先,您实际上没有顶层对象。其次,您不应该将System.out.println(…)放在for循环中。您应该非常清楚您构建的层次结构
public class Hirarchy {
public static class Entry {
private String name;
public Entry(String name) {
this.name = name;
}
private List<Entry> children;
public void add(Entry node) {
if (children == null)
children = new ArrayList<Entry>();
children.add(node);
}
public static void main(String[] args) {
List<String> listofParent = new ArrayList<String>();
listofParent.add("Mind");
listofParent.add("Habbit");
listofParent.add("Culture");
List<String> listofChild = new ArrayList<String>();
listofChild.add("Sea");
listofChild.add("water");
listofChild.add("Wind");
Entry topLevelEntry = new Entry("Root");
//Entry mainRoot=null;//deleted
for (int i = 0; i < listofParent.size(); i++) {
Entry root = new Entry(listofParent.get(i));
Entry mainRoot= aMethod2form(root, listofChild); //modified
Entry e=new Entry("Root");
e.add(mainRoot);
// Gson g=new Gson();
// System.out.println(g.toJson(e));
topLevelEntry.add(e);
}
Gson g = new Gson();
System.out.println(g.toJson(topLevelEntry));
}
private static Entry aMethod2form(Entry root, List<String> listofChild) {
for(int i=0;i<listofChild.size();i++){
root.add(new Entry(listofChild.get(i)));
}
return root;
}
}
}
public-class-hirachy{
公共静态类条目{
私有字符串名称;
公共条目(字符串名称){
this.name=名称;
}
私人名单儿童;
公共作废添加(条目节点){
if(children==null)
children=newarraylist();
添加(节点);
}
公共静态void main(字符串[]args){
List listofParent=new ArrayList();
添加(“心智”);
添加(“Habbit”);
添加(“文化”);
List listofChild=new ArrayList();
儿童名单。添加(“Sea”);
儿童名单。添加(“水”);
儿童名单。添加(“风”);
条目topLevelEntry=新条目(“根”);
//条目mainRoot=null;//已删除
for(int i=0;i 对于(int i=0;i他们得到你的答案了吗?
public class Hirarchy {
public static class Entry {
private String name;
public Entry(String name) {
this.name = name;
}
private List<Entry> children;
public void add(Entry node) {
if (children == null)
children = new ArrayList<Entry>();
children.add(node);
}
public static void main(String[] args) {
List<String> listofParent = new ArrayList<String>();
listofParent.add("Mind");
listofParent.add("Habbit");
listofParent.add("Culture");
List<String> listofChild = new ArrayList<String>();
listofChild.add("Sea");
listofChild.add("water");
listofChild.add("Wind");
Entry topLevelEntry = new Entry("Root");
//Entry mainRoot=null;//deleted
for (int i = 0; i < listofParent.size(); i++) {
Entry root = new Entry(listofParent.get(i));
Entry mainRoot= aMethod2form(root, listofChild); //modified
Entry e=new Entry("Root");
e.add(mainRoot);
// Gson g=new Gson();
// System.out.println(g.toJson(e));
topLevelEntry.add(e);
}
Gson g = new Gson();
System.out.println(g.toJson(topLevelEntry));
}
private static Entry aMethod2form(Entry root, List<String> listofChild) {
for(int i=0;i<listofChild.size();i++){
root.add(new Entry(listofChild.get(i)));
}
return root;
}
}
}