如何在JAVA中解析JSONArray的JSONArray?

时间:2012-06-19 12:35:46

标签: java android json arrays

我将以下数组从PHP返回到我的JAVA Android应用程序:

Array ( [0] => Array ( [referral_fullname] => Name 1 [referral_balance] => 500 ) [1] => Array ( [referral_fullname] => Name 2 [referral_balance] => 500 ) );

在Java中,他们上面的数组看起来像这样:

{"0":{"referral_fullname":"Name 1","referral_balance":"500"},"1":{"referral_fullname":"Name 2","referral_balance":"500"}};

对于我正在使用的简单JSONObject:

JSONTokener tokener = new JSONTokener(result.toString());
JSONObject finalResult = new JSONObject(tokener);

referral_fullname = finalResult.getString("referral_fullname");

但对于我不知道的对象数组!

5 个答案:

答案 0 :(得分:4)

String str = your Json-> apply to.String();

    JSONObject jObject  = new JSONObject(str);


    Map<String,String> map = new HashMap<String,String>();
    Iterator iter = jObject.keys();
    while(iter.hasNext()){
        String key = (String)iter.next();
        String value = jObject .getString(key);
        map.put(key,value);
    }

答案 1 :(得分:3)

您的Json语法错误,JSONArray应该是这样的:

["0":{"referral_fullname":"Name 1","referral_balance":"500"},"1":{"referral_fullname":"Name 2","referral_balance":"500"}];

要解析包含一些JsonArray的{​​{1}},请尝试以下操作:

JSONObject

在类//parse the result JSONObject jsonResult = null; JSONArray arrayResult = null; ArrayList<YourObject> listObjects = null; try { arrayResult = new JSONArray(result); if(arrayResult != null) { listObjects = new ArrayList<YourObject>(); int lenght = arrayResult.length(); for(int i=0; i< lenght; i++) { JSONObject obj = arrayResult.getJSONObject(i); YourObject object = new YourObject(obj); listObjects.add(object); } } } catch (JSONException e) { e.printStackTrace(); } 中添加构造函数,将Json转换为实例:

YourObject

答案 2 :(得分:2)

你应该使用

JSONArray finalResult = new JSONArray(tokener);

如果可以的话。您的结构现在是一个具有两个字段0和1的对象,其中包含另一个对象。如果要像

那样轻松迭代,则必须获取一个对象数组来代替此复合对象
JSONObject jso;
for(int i = finalResult.lenght-1; i >=0; i--){
  jso = finalResult.get(i);
  // jso == {"referral_fullname":"Name 1","referral_balance":"500"}

  [whatever]

}

答案 3 :(得分:1)

试试这个.............

final JSONArray result_array = json.getJSONArray("result"); 

for (int i = 0; i < result.length(); i++) {

JSONObject joObject = result_array.getJSONObject(i);
String jName = joObject.get("referral_fullname").toString();
String jbalance = joObject.get("referral_balance").toString();

                    }

答案 4 :(得分:1)

首先制作一个JSON对象,然后在内层看到你有的数据,然后获取数组。 您需要先制作JSON对象。例如,如果resp是一个String(例如作为http响应出现)

JSONObject jsonObject = new JSONObject(resp); 

jsonObject可能包含其他JSON对象或JSON数组。如何转换JSON取决于响应。 如果arraykey是JSON对象中的数组,那么我们可以通过以下方式获取数组列表。

JSONArray arr  = jsonObject.getJSONArray("arraykey");

检查arr的长度,如果它大于0则根据数据包含JSON对象或JSON数组。 有一个完整的例子,可以找到关于JSON字符串到JSON数组的一些解释 http://www.hemelix.com/JSONHandling