达累斯萨拉姆,
使用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没有提供这样做吗?
至少,将JSONObject添加到JSONArray会删除括号:
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 }]
没有括号......在API中他们提到:
put(java.util.Map value)
Put a value in the JSONArray, where the value will be a JSONObject which is produced from a Map.
而不是手工做,首先要先讨论它,首先要感谢!
答案 0 :(得分:1)
你试试GSon吗?它专门用于Java对象到JSon和Json到Java对象。
答案 1 :(得分:0)
我建议看一下org.json包以外的东西。几乎所有来自org.json列表的替代方法都提供了使用JSON的更方便和更简单的方法。 除了Gson之外,我会推荐Jackson;而flex-json和Svenson是其他看起来不错的套装。
如果您坚持使用org.json执行此操作,则需要更多地解释您的问题 - API具有您需要的所有方法,并且它们允许您添加所有类型的值(JSON数组,对象,字符串) ,数字,布尔值和空值)。但是您的类型需要匹配JSON类型,因此没有从数组到对象的转换,例如。