java Java动态创建的JSON对象

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/25887486/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-11-02 08:52:55  来源:igfitidea点击:

Dynamically created JSON Object in Java

javajson

提问by keshet

I'm trying to build a JSON object in my servlet. The object should look like this:

我正在尝试在我的 servlet 中构建一个 JSON 对象。该对象应如下所示:

{
    "firms": [
    {
        "name": "firm1",
        "projects": [
        {
            "name": "firm1project1"
        },
        {
            "name": "firm1project2"
        },
        {
            "name": "firm1project3"
        }
        ]
    },
    {
        "name": "firm2",
        "projects": [
        {
            "name": "firm2project1"
        },
        {
            "name": "firm2project2"
        },
        {
            "name": "firm2project3"
        }
        ]
    },
    {
        "name": "firm3",
        "projects": [
        {
            "name": "firm3project1"
        },
        {
            "name": "firm3project2"
        },
        {
            "name": "firm3project3"
        }
        ]
    },
    {
        "name": "firm4",
        "projects": [
        {
            "name": "firm4project1"
        },
        {
            "name": "firm4project2"
        },
        {
            "name": "firm4project3"
        }
        ]
    }
    ]
}

I have a problem in creating array of project names objects:

我在创建项目名称对象数组时遇到问题:

[
     {
         "name": "firm2project1"
     },
     {
         "name": "firm2project2"
     },
     {
         "name": "firm2project3"
     }
]

Right now I have the code as showed below (oJsonInner is a JSONObject object, aProjects - ArrayList of JSONObject type). I build the oJsonInner object from the results I get from database query:

现在我有如下所示的代码(oJsonInner 是一个 JSONObject 对象,aProjects - JSONObject 类型的 ArrayList)。我根据从数据库查询获得的结果构建 oJsonInner 对象:

while(result.next()){
oJsonInner.put("name",result.getString("project_name"));
aProjects.add(oJsonInner);
}

Is there any way to get the value of the oJsonInner object in aProjects.add(oJsonInner);so during the next loop I could create a new oJsonInner object with different "project_name" value without updating the object that got into aProjects array during the first loop?

有什么方法可以获取 oJsonInner 对象的值,aProjects.add(oJsonInner);因此在下一个循环中我可以创建一个具有不同“project_name”值的新 oJsonInner 对象,而无需更新在第一个循环期间进入 aProjects 数组的对象?

回答by GreyBeardedGeek

while(result.next()){
   oJsonInner = new JsonObject();
   oJsonInner.put("name",result.getString("project_name"));
   aProjects.add(oJsonInner);
}

回答by Kumar Kailash

Try this method:

试试这个方法:

ArrayList<JSONObject> aProjects = new <JSONObject>ArrayList();

while(result.next()){
    JSONObject oJsonInner = new JSONObject();
    oJsonInner.put("name","project1");
    aProjects.add(oJsonInner);
}

RESULT:

结果:

[{"name":"project1"}, {"name":"project2"}]

回答by Parth Srivastav

you can use a JSONArray object and add it JSON object.

您可以使用 JSONArray 对象并将其添加为 JSON 对象。

while(result.next()){
  JSONObject oJsonInner = new JSONObject();
  JSONArray arr = new JSONArray();
  json.put("name",result.getString("project_name"));
  arr.put(json);
}

回答by Khaled Lela

Use Gsonlib that help you to serialize json format which take java bean and convert it to json format.

使用Gsonlib 帮助您序列化采用 java bean 的 json 格式并将其转换为 json 格式。

Model

模型

public class Firm {
private String name;

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

private List<Project> projetcts;


public List<Project> getProjetcts() {
    return projetcts;
}

public void setProjetcts(List<Project> projetcts) {
    this.projetcts = projetcts;
}


public static class Project{
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}
}

Gson code

Gson代码

 public static void main(String[] args) {
    Firm [] firms = new Firm[2]; 

    Project p1 = new Project();
    p1.setName("project 1");
    Project p2 = new Project();
    p2.setName("project 2");
    Project p3 = new Project();
    p3.setName("project 3");
    List<Project> projects = new ArrayList<Firm.Project>();
    projects.add(p1);
    projects.add(p2);
    projects.add(p3);

    Firm firm1 = new Firm();
    firm1.setName("firm1");
    firm1.setProjetcts(projects);

    Firm firm2 = new Firm();
    firm2.setName("firm2");
    firm2.setProjetcts(projects);

    firms[0] = firm1;
    firms[1] = firm2;

    String jsonText = new Gson().toJson(firms);
    System.out.println(jsonText);

}

Result Sample

结果样本

[{"name":"firm1","projetcts":[{"name":"project 1"},{"name":"project 2"},{"name":"project 3"}]},{"name":"firm2","projetcts":[{"name":"project 1"},{"name":"project 2"},{"name":"project 3"}]}]

[{"name":"firm1","projetcts":[{"name":"project 1"},{"name":"project 2"},{"name":"project 3"}]}, {"name":"firm2","projetcts":[{"name":"project 1"},{"name":"project 2"},{"name":"project 3"}]}]