[{
id: 12345, //Id given by android app
name: Name,
status: {
yes: [N1, n2, n3],
no: [n1, n2 ,n3]
}
}]
我将如何在java中为此编写json对象?
我的尝试:
JSONObject object=new JSONObject();
JSONArray jsonarray=new JSONArray();
try {
object.put("id",12345);
object.put("name",Name);
jsonarray.put("yes");
jsonarray.put("no");
} catch (JSONException js) {
js.printStackTrace();
}
我认为问题出在jsonarray上。我需要再次写入jsonarray对象。但我无法弄清楚我将如何做到这一点。
修改
这个问题不重复。
@ShaishavJogani我不认为这个问题与您提供链接的问题是重复的,因为这个问题是关于生成JSON,这是关于解析JSON。
答案 0 :(得分:2)
status
也是JSONObject
,yes
和no
是JSONObject
类型JSONArray
的属性,主要对象是在JSONArray
,所以我会这样做:
JSONObject object = new JSONObject();
object.put("id", 12345);
object.put("name", "Name");
JSONObject status = new JSONObject();
object.put("status", status);
status.put("yes", new JSONArray(Arrays.asList("N1", "n2", "n3")));
status.put("no", new JSONArray(Arrays.asList("n1", "n2", "n3")));
JSONArray array = new JSONArray(Collections.singletonList(object));
System.out.println(array);
<强>输出:强>
[{"name":"Name","id":12345,"status":{"no":["n1","n2","n3"],"yes":["N1","n2","n3"]}}]
答案 1 :(得分:0)
我希望在数组之前会有一个JSONObject或者可能是数组的某个名称:如果这个数组包含在JSONObject中,请尝试下面的代码:
try {
JSONObject object=new JSONObject();
JSONArray jsonarray=object.getJSONArray();
if(jsonarray.length()>0)
{
for(int i=0; i<jsonarray.length();i++)
{
object.put("id",12345);
object.put("name",Name);
jsonarray.put("yes");
jsonarray.put("no);
}
}
}
catch (Exception e) {
e.printStackTrace();
}
否则:
try {
JSONArray jsonarray=new JSONArray("Name of Array");
if(jsonarray.length()>0)
{
for(int i=0; i<jsonarray.length();i++)
{
object.put("id",12345);
object.put("name",Name);
jsonarray.put("yes");
jsonarray.put("no);
}
}
}
catch (Exception e) {
e.printStackTrace();
}