json官方java api:JSONArray的JSONObjects

时间:2010-09-06 14:46:58

标签: java json

达累斯萨拉姆,

使用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.

而不是手工做,首先要先讨论它,首先要感谢!

2 个答案:

答案 0 :(得分:1)

你试试GSon吗?它专门用于Java对象到JSon和Json到Java对象。

答案 1 :(得分:0)

我建议看一下org.json包以外的东西。几乎所有来自org.json列表的替代方法都提供了使用JSON的更方便和更简单的方法。 除了Gson之外,我会推荐Jackson;而flex-json和Svenson是其他看起来不错的套装。

如果您坚持使用org.json执行此操作,则需要更多地解释您的问题 - API具有您需要的所有方法,并且它们允许您添加所有类型的值(JSON数组,对象,字符串) ,数字,布尔值和空值)。但是您的类型需要匹配JSON类型,因此没有从数组到对象的转换,例如。