3

我有以下数组从 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");

但是对于我不知道的一组对象!

4

5 回答 5

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);
    }
于 2012-06-19T12:38:56.793 回答
3

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

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

并解析一个JsonArray包含一些的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();
            }

并在您的 Class 中添加一个构造函数YourObject以将您的 Json 转换为实例:

public YourObject(JSONObject json) {
    if (!json.isNull("referral_fullname"))
        this.referral_fullname = json.optString("referral_fullname", null);
    if (!json.isNull("referral_balance"))
        this.referral_balance = json.optString("referral_balance", null);
}
于 2012-06-19T12:47:36.147 回答
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]

}
于 2012-06-19T12:38:44.097 回答
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();

                    }
于 2012-06-19T12:54:10.650 回答
1

首先创建一个 JSON 对象,然后在内部级别查看如果你有数组然后获取数组。您需要先制作 JSON 对象。例如,如果 resp 是一个字符串(例如作为 http 响应)

JSONObject jsonObject = new JSONObject(resp); 

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

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

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

于 2014-05-06T12:38:19.000 回答