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一部を含むa を解析するには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();
            }

クラスにコンストラクターを追加して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 の 2 つのフィールドを持つオブジェクトになりました。簡単に繰り返したい場合は、この複合オブジェクトの代わりにオブジェクトの配列を取得する必要があります

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

最初にJSONオブジェクトを作成し、配列がある場合は内部レベルで何があるかを確認してから、配列をフェッチします。最初に JSON オブジェクトを作成する必要があります。たとえば、resp が文字列の場合 (たとえば、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にあります。

于 2014-05-06T12:38:19.000 に答える
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 に答える