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
Dynamically created JSON Object in Java
提问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"}]}]