Java 具有树结构的分层JSON
我必须用Java创建一个类似于树的JSON结构,其中有一个父节点,其中有多个子节点,以此类推。这是我的代码,我已经部分完成了这一步,但没有完全成功。这是我需要的输出Java 具有树结构的分层JSON,java,json,gson,Java,Json,Gson,我必须用Java创建一个类似于树的JSON结构,其中有一个父节点,其中有多个子节点,以此类推。这是我的代码,我已经部分完成了这一步,但没有完全成功。这是我需要的输出 { "name": "Culture", "children": [ { "name": "Salary" }, { "name": "Work", "children": [
{
"name": "Culture",
"children": [
{
"name": "Salary"
},
{
"name": "Work",
"children": [
{
"name": "Effort"
},
{
"name": "trust"
}
]
}
]
}
但我产生的是
{"name":"Culture",[{"name":"Salary"},{"name":"Work"},{"name":"Effort"}],"name":"Work",[{"name":"Culture"},{"name":"Work"}]}
这是我的密码:
import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.List;
public class ParentChildApp {
public static class EntryListContainer {
public List<Entry> children = new ArrayList<Entry>();
public Entry name;
}
public static class Entry {
private String name;
public Entry(String name) {
this.name = name;
}
}
public static void main(String[] args) {
EntryListContainer elc1 = new EntryListContainer();
elc1.name = new Entry("Culture");
elc1.children.add(new Entry("Salary"));
elc1.children.add(new Entry("Work"));
elc1.children.add(new Entry("Effort"));
EntryListContainer elc2 = new EntryListContainer();
elc2.name = new Entry("Work");
elc2.children.add(new Entry("Culture"));
elc2.children.add(new Entry("Work"));
ArrayList<EntryListContainer> al = new ArrayList<EntryListContainer>();
Gson g = new Gson();
al.add(elc1);
al.add(elc2);
StringBuilder sb = new StringBuilder("{");
for (EntryListContainer elc : al) {
sb.append(g.toJson(elc.name).replace("{", "").replace("}", ""));
sb.append(",");
sb.append(g.toJson(elc.children));
sb.append(",");
}
String partialJson = sb.toString();
if (al.size() > 1) {
int c = partialJson.lastIndexOf(",");
partialJson = partialJson.substring(0, c);
}
String finalJson = partialJson + "}";
System.out.println(finalJson);
}
}
import com.google.gson.gson;
导入java.util.ArrayList;
导入java.util.List;
公共类ParentChildApp{
公共静态类EntryListContainer{
public List children=new ArrayList();
公众入口名称;
}
公共静态类条目{
私有字符串名称;
公共条目(字符串名称){
this.name=名称;
}
}
公共静态void main(字符串[]args){
EntryListContainer elc1=新的EntryListContainer();
elc1.name=新条目(“文化”);
elc1.子女。添加(新条目(“工资”);
elc1.儿童。添加(新条目(“工作”);
elc1.儿童。添加(新条目(“努力”);
EntryListContainer elc2=新的EntryListContainer();
elc2.name=新条目(“工作”);
elc2.儿童。添加(新条目(“文化”);
elc2.儿童。添加(新条目(“工作”);
ArrayList al=新的ArrayList();
Gson g=新的Gson();
加上(elc1);
新增(elc2);
StringBuilder sb=新的StringBuilder(“{”);
对于(EntryListContainer elc:al){
sb.append(g.toJson(elc.name).replace(“{,”).replace(“},”);
某人加上(“,”);
sb.append(g.toJson(elc.children));
某人加上(“,”);
}
字符串partialJson=sb.toString();
如果(al.size()>1){
int c=partialJson.lastIndexOf(“,”);
partialJson=partialJson.substring(0,c);
}
字符串finalJson=partialJson+“}”;
System.out.println(finalJson);
}
}
执行以下操作:
package stackoverflow.questions;
import com.google.gson.*;
import java.util.ArrayList;
import java.util.List;
public class ParentChildApp {
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) {
Entry workNode = new Entry("Work");
workNode.add(new Entry("Effort"));
workNode.add(new Entry("Trust"));
Entry salaryNode = new Entry("Salary");
Entry cultureNode = new Entry("Culture");
cultureNode.add(salaryNode);
cultureNode.add(workNode);
Gson g = new Gson();
System.out.println(g.toJson(cultureNode));
}
}
package stackoverflow.questions;
导入com.google.gson.*;
导入java.util.ArrayList;
导入java.util.List;
公共类ParentChildApp{
公共静态类条目{
私有字符串名称;
公共条目(字符串名称){
this.name=名称;
}
私人名单儿童;
公共作废添加(条目节点){
if(children==null)
children=newarraylist();
添加(节点);
}
}
公共静态void main(字符串[]args){
条目工作节点=新条目(“工作”);
添加(新条目(“努力”);
添加(新条目(“信任”);
分录工资节点=新分录(“工资”);
条目cultureNode=新条目(“文化”);
cultureNode.add(salaryNode);
cultureNode.add(工作节点);
Gson g=新的Gson();
System.out.println(g.toJson(cultureNode));
}
}
您将获得所需的JSON 这样做:
package stackoverflow.questions;
import com.google.gson.*;
import java.util.ArrayList;
import java.util.List;
public class ParentChildApp {
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) {
Entry workNode = new Entry("Work");
workNode.add(new Entry("Effort"));
workNode.add(new Entry("Trust"));
Entry salaryNode = new Entry("Salary");
Entry cultureNode = new Entry("Culture");
cultureNode.add(salaryNode);
cultureNode.add(workNode);
Gson g = new Gson();
System.out.println(g.toJson(cultureNode));
}
}
package stackoverflow.questions;
导入com.google.gson.*;
导入java.util.ArrayList;
导入java.util.List;
公共类ParentChildApp{
公共静态类条目{
私有字符串名称;
公共条目(字符串名称){
this.name=名称;
}
私人名单儿童;
公共作废添加(条目节点){
if(children==null)
children=newarraylist();
添加(节点);
}
}
公共静态void main(字符串[]args){
条目工作节点=新条目(“工作”);
添加(新条目(“努力”);
添加(新条目(“信任”);
分录工资节点=新分录(“工资”);
条目cultureNode=新条目(“文化”);
cultureNode.add(salaryNode);
cultureNode.add(工作节点);
Gson g=新的Gson();
System.out.println(g.toJson(cultureNode));
}
}
您将获得所需的JSON 当您可以创建适当的映射和列表结构并自动创建它时,为什么要操纵字符串来创建JSON?如果您想使用JSP,请检查下面的答案,当您可以创建适当的映射和列表结构并自动创建它时,为什么要操纵字符串来创建JSON?如果您想使用JSP,请检查下面的答案