2011-08-25 235 views
8

基本上我有:如何将JSONArray转换为JSONObject?

JSONArray j = new JSONArray(); 
j.add(new JSONObject()); //JSONObject has a bunch of data in it 
j.add(new JSONArray()); //JSONArray has a bunch of data in it 

现在我想谈谈的是JSONArrayJSONObject与它相同的信息。这样我就可以传递Object,然后当我想要的时候,我可以从对象中获取所有信息。任何帮助将不胜感激,谢谢。

+0

嗯,我尝试使用JSONArray.toJSONObject(ARG),但进出口新的JSON我无法算出它的API要放在什么arg。 http://json-lib.sourceforge.net/apidocs/net/sf/json/JSONArray.html#toJSONObject(net.sf.json.JSONArray) – Grammin

回答

17

通常,Json对象将包含您的值(包括数组)作为其中的命名字段。所以,像这样:

JSONObject jo = new JSONObject(); 
JSONArray ja = new JSONArray(); 
// populate the array 
jo.put("arrayName",ja); 

在JSON中将是{“arrayName”:[...]}。

+1

是的,这是我需要做的,而不是只是将我的值添加到数组我只是将它们添加到一个对象,并给每个名称标识符。谢谢。 – Grammin

1

你最初不能把数据当作JSONObject吗?

也许首先将字符串解析为JSONObject和JSONArray? JSON字符串从哪里来?

我不确定是否可以将JsonArray转换为JsonObject。

我相信你正在使用从json.org

  • JSONObject.java
    一个JSONObject是名称/值对的无序集合以下。它的外部形式是一个用大括号括起来的字符串,它们的名称和值之间用冒号隔开,数值和名称之间用逗号隔开。内部表单是一个具有get()和opt()方法的对象,用于按名称访问值,put()方法用于按名称添加或替换值。这些值可以是以下任何类型:Boolean,JSONArray,JSONObject,Number和String,或JSONObject.NULL对象。

  • JSONArray.java
    JSONArray是一个有序的值序列。它的外部形式是一个用方括号括起来的字符串,两个值之间用逗号隔开。内部表单是一个对象,它具有get()和opt()方法以通过索引访问值,put()方法用于添加或替换值。这些值可以是以下任何类型:Boolean,JSONArray,JSONObject,Number和String,或JSONObject.NULL对象。

2

代码:

List<String> list = new ArrayList<String>(); 

list.add("a"); 

JSONArray array = new JSONArray(); 

for (int i = 0; i < list.size(); i++) { 
    array.put(list.get(i)); 
} 
JSONObject obj = new JSONObject(); 

try { 
    obj.put("result", array); 
} catch (JSONException e) { 
    e.printStackTrace(); 
} 
1

我的JSONObject像这样:{"status":[{"Response":"success"}]}

如果我想将JSONObject值(这是一个JSONArray)自动转换为JSONObject而不使用任何静态值,那么这里是代码。

JSONArray array=new JSONArray(); 
JSONObject obj2=new JSONObject(); 
obj2.put("Response", "success"); 
array.put(obj2); 
JSONObject obj=new JSONObject(); 
obj.put("status",array); 

转换的JSONArray以JSON对象:

Iterator<String> it=obj.keys(); 
     while(it.hasNext()){ 
String keys=it.next(); 
JSONObject innerJson=new JSONObject(obj.toString()); 
JSONArray innerArray=innerJson.getJSONArray(keys); 
for(int i=0;i<innerArray.length();i++){ 
JSONObject innInnerObj=innerArray.getJSONObject(i); 
Iterator<String> InnerIterator=innInnerObj.keys(); 
while(InnerIterator.hasNext()){ 
System.out.println("InnInnerObject value is :"+innInnerObj.get(InnerIterator.next())); 


} 
}