JSON官方的Java API:一个JSONObjects的JSONArray
达累斯萨拉姆,JSON官方的Java API:一个JSONObjects的JSONArray
使用json.org API,我们可以轻松地将地图以一个JSON对象:
Map<String, String> carta = new Map<String, String>();
carta.put("id", "123");
carta.put("Planet", "Earth");
carta.put("Status", "getting dirty");
JSONObject json = new JSONObject();
for(Iterator<String> it=input.keySet().iterator(); it.hasNext();){
String key = it.next();
json.put(key, input.get(key));
}
System.out.println(json.toString());
// output: {id:"123", Planet:"Earth", Status: "getting dirty"}
现在,我们希望有这些数组对象 这个API不提供这个吗?而在API中他们提到
JSONArray joArr = new JSONArray();
joArr.put(cartaEarth);
joArr.put(cartaMars);
System.out.println(joArr.toString());
//output: [{ id:123, Planet:Earth, Status: getting dirty }, {id: 456, Planet:Mars, Status: maybe aliens there }]
没有括号...:
put(java.util.Map value)
Put a value in the JSONArray, where the value will be a JSONObject which is produced from a Map.
,而不是做这件事的byhand,首选
至少,添加一个JSONObjects到JSONArray移除支架先讨论一下,谢谢!
你试试GSon?它专门针对JSon和Java对象的Java对象。
gson很好地完成了这项工作,谢谢@rsilva!不过,我不知道json.org的api是否可以吗? – 2010-09-06 16:30:15
我会建议看看别的东西比org.json包。几乎所有来自org.json列表的替代方案都提供了使用JSON更方便和更简单的方法。 除了有些人喜欢的Gson,我会推荐Jackson;而flex-json和Svenson是另外一些看起来很体面的软件包。
如果你坚持使用org.json来做这件事,你需要更多地解释你的问题 - API有你需要的所有方法,它们允许你添加所有类型的值(JSON数组,对象,字符串,数字,布尔值和空值)。但是你的类型需要匹配JSON类型,所以没有从数组到对象的转换。
OK 4 http://jackson.codehaus.org/ 至于json.org,我没有附件...尚未... @API,JSONArray以不同的方式从地图生成JSONObjects(无括号)比从地图手动创建JSONObject。 – 2010-09-07 10:15:34
好(关于创建地图),还没有广泛使用它。太糟糕,如果它是不对称的。但请注意,括号不是对象模型的一部分,而是序列化的一部分......我想你所说的是它添加了Map或List的所有元素,而不是Map或List本身。在Java中,通常是由于List.add()和List.addAll()(或Map.put(),Map.putAll())之间的区别。 – StaxMan 2010-09-07 16:33:42
您是否尝试http://code.google.com/p/google-gson/?它是专门从Obj到JSon和Json到Obj – rsilva4 2010-09-06 14:49:51
究竟是什么问题?你问如何把你的对象放在一个数组中,但继续显示你知道如何去做。 – RoToRa 2010-09-06 15:00:03
我不明白为什么JSONArray的转换与JSONObject转换不一致。在JSONArray中,括号被删除! – 2010-09-06 15:25:12