JSONArray 只有 returns 1 放?
JSONArray only returns 1 put?
我有一个函数 returns 一个 JSON 对象
private JSONObject retrieveData()
{
JSONObject json = new JSONObject();
json.put("Country", "Ireland");
json.put("Capital", "Dublin");
json.put("Country", "Spain");
json.put("Capital", "Madrid");
json.put("Country","France");
json.put("Capital", "Paris");
JSONArray ja = new JSONArray();
ja.put(json);
JSONObject mainObj = new JSONObject();
mainObj.put("places", ja);
return mainObj;
}
我的输出是
{
"places":[
{
"Country": "France",
"Capital": "Paris"
}
]
}
为什么没有将所有 .put 添加到 mainOBj,谢谢
谢谢伊沃的回答
我刚刚在这里尝试了您的解决方案
private JSONObject retrieveData()
{
JSONObject json = new JSONObject();
JSONArray ja = new JSONArray();
json.put("Country", "Ireland");
json.put("Capital", "Dublin");
ja.put(json);
json.put("Country", "Spain");
json.put("Capital", "Madrid");
ja.put(json);
json.put("Country","France");
json.put("Capital", "Paris");
ja.put(json);
JSONObject mainObj = new JSONObject();
mainObj.put("places", ja);
//json.accumulate("places", list);
return mainObj;
}
虽然追加了 3 个对象,但出现了同样的问题
他们是一样的 :-/
{"places":
[
{"Country":"France","Capital":"Paris"}, {"Country":"France","Capital":"Paris" },{"Country":"France","Capital":"Paris"}]}
put
所做的是将 key(第一个参数)设置为 value(第二个参数)。因此,首先将 json.Country
设置为爱尔兰,将 json.Capital
设置为都柏林。接下来,您覆盖 json.Country
并将其设置为西班牙,并继续这样做,直到最后国家和首都被覆盖为法国和巴黎。
不是为每个 Country/Capital 对调用 JSONObject 上的 put
,您应该为每个对对 JSONarray 调用 put
。
正如评论中指出的那样,确保每次分配数据之前都创建一个新的JSONObject
。
private JSONObject retrieveData()
{
// Make sure to declare both the JSONObject and JSONArray first!
JSONObject json = new JSONObject();
JSONArray ja = new JSONArray();
// This creates one object for the Ireland/Dublin pair
json.put("Country", "Ireland");
json.put("Capital", "Dublin");
// This appends above object (Ireland/Dublin pair) to the JSONArray
ja.put(json);
// Now repeat the above lines for each pair:
json = new JSONObject();
json.put("Country", "Spain");
json.put("Capital", "Madrid");
ja.put(json);
json = new JSONObject();
json.put("Country","France");
json.put("Capital", "Paris");
ja.put(json);
// Finally, declare the main object and set the key "places" to
// the array holding each pair
JSONObject mainObj = new JSONObject();
mainObj.put("places", ja);
return mainObj;
}
我有一个函数 returns 一个 JSON 对象
private JSONObject retrieveData()
{
JSONObject json = new JSONObject();
json.put("Country", "Ireland");
json.put("Capital", "Dublin");
json.put("Country", "Spain");
json.put("Capital", "Madrid");
json.put("Country","France");
json.put("Capital", "Paris");
JSONArray ja = new JSONArray();
ja.put(json);
JSONObject mainObj = new JSONObject();
mainObj.put("places", ja);
return mainObj;
}
我的输出是 { "places":[ { "Country": "France", "Capital": "Paris" } ] }
为什么没有将所有 .put 添加到 mainOBj,谢谢
谢谢伊沃的回答 我刚刚在这里尝试了您的解决方案
private JSONObject retrieveData()
{
JSONObject json = new JSONObject();
JSONArray ja = new JSONArray();
json.put("Country", "Ireland");
json.put("Capital", "Dublin");
ja.put(json);
json.put("Country", "Spain");
json.put("Capital", "Madrid");
ja.put(json);
json.put("Country","France");
json.put("Capital", "Paris");
ja.put(json);
JSONObject mainObj = new JSONObject();
mainObj.put("places", ja);
//json.accumulate("places", list);
return mainObj;
}
虽然追加了 3 个对象,但出现了同样的问题
他们是一样的 :-/
{"places":
[
{"Country":"France","Capital":"Paris"}, {"Country":"France","Capital":"Paris" },{"Country":"France","Capital":"Paris"}]}
put
所做的是将 key(第一个参数)设置为 value(第二个参数)。因此,首先将 json.Country
设置为爱尔兰,将 json.Capital
设置为都柏林。接下来,您覆盖 json.Country
并将其设置为西班牙,并继续这样做,直到最后国家和首都被覆盖为法国和巴黎。
不是为每个 Country/Capital 对调用 JSONObject 上的 put
,您应该为每个对对 JSONarray 调用 put
。
正如评论中指出的那样,确保每次分配数据之前都创建一个新的JSONObject
。
private JSONObject retrieveData()
{
// Make sure to declare both the JSONObject and JSONArray first!
JSONObject json = new JSONObject();
JSONArray ja = new JSONArray();
// This creates one object for the Ireland/Dublin pair
json.put("Country", "Ireland");
json.put("Capital", "Dublin");
// This appends above object (Ireland/Dublin pair) to the JSONArray
ja.put(json);
// Now repeat the above lines for each pair:
json = new JSONObject();
json.put("Country", "Spain");
json.put("Capital", "Madrid");
ja.put(json);
json = new JSONObject();
json.put("Country","France");
json.put("Capital", "Paris");
ja.put(json);
// Finally, declare the main object and set the key "places" to
// the array holding each pair
JSONObject mainObj = new JSONObject();
mainObj.put("places", ja);
return mainObj;
}