1

重複の可能性:
AndroidでJSONオブジェクトを解析する方法

次のようなJSONオブジェクトがあります..オブジェクトを解析するにはどうすればよいですか?

{
  "0":
     {
       "productname":"Famous Amos Bite Size Chocolate Chip Cookies - 4 Pack",
       "imageurl":"http://ecx.images-amazon.com/images/I/513j-WyH1GL._SL160_.jpg",
       "producturl":"http://www.searchupc.com/rd.aspx?u=d%2bKvXQ%2fFIfa95xJ38QYLycSjbm5dt4dy3l4IYTYPM3agt4tefTNsMwzWkPWd9gCY%2fEnCdaGVMLsQD%2fO5ZUWbfJyqOuwIWqkLvouDyw5u7VWmda5dK2%2fRTmcAp3%2f1TImmZmtdaNauL74Lj8BkV0r15VeazeDf4Im4Nx%2f5TOuqBUnUXzeNkYrWvlLitV8FDFIkM77UIjZzYZqoQANt0PBNeqh94bzLqFRXpNYPyqc0fLDTHnA9TM2jsbaKVN23UA%2fH",
       "price":"5.95",
       "currency":"usd",
       "saleprice":"",
       "storename":"amazon.com"
     }
}
4

5 に答える 5

3

以下の例は、JSON を解析する方法を示しています。ここでは、json の解析について非常に明確な説明が得られます。

JSONObject myjson = new JSONObject("put you json string here");
JSONArray the_json_array = myjson.getJSONArray("0");
int size = the_json_array.length();
for (int i = 0; i < size; i++) {
JSONObject another_json_object = the_json_array.getJSONObject(i);           
    System.out.println((String) another_json_object.get("productname"));        
    System.out.println((String) another_json_object.get("imageurl"));       
    System.out.println((String) another_json_object.get("producturl"));
}
于 2012-08-28T10:24:35.330 に答える
2

Android は、文字列を JSONObject に解析するために使用できるorg.json パッケージを提供します。

次のコード行でこれを実現できます。

JSONObject json = new JSONObject(myJsonString);
于 2012-08-28T10:22:37.577 に答える
2

これには を使用する必要がありJSONObjectます。以下のコードの使用 -

JSONParser .java

public JSONObject getJSONFromUrl(String url)  // url is your json url
{

    // Making HTTP request
    try {
        // defaultHttpClient
        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost(url);

        HttpResponse httpResponse = httpClient.execute(httpPost);
        HttpEntity httpEntity = httpResponse.getEntity();
        is = httpEntity.getContent();           

    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

    try {
        BufferedReader reader = new BufferedReader(new InputStreamReader(
                is, "iso-8859-1"), 8);
        StringBuilder sb = new StringBuilder();
        String line = null;
        while ((line = reader.readLine()) != null) {
            sb.append(line + "n");
        }
        is.close();
        json = sb.toString();
    } catch (Exception e) {
        Log.e("Buffer Error", "Error converting result " + e.toString());
    }

    // try parse the string to a JSON object
    try {
        jObj = new JSONObject(json);
    } catch (JSONException e) {
        Log.e("JSON Parser", "Error parsing data " + e.toString());
    }

    // return JSON String
    return jObj;

}

そして、このjsonbobjectJsonObjectを使用して結果を配列として取得できます。

// Creating JSON Parser instance
JSONParser jParser = new JSONParser();

// getting JSON string from URL
JSONObject json = jParser.getJSONFromUrl(url);

try {
    // Getting Array of Contacts
    contacts = json.getJSONArray(TAG_CONTACTS);

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

        String product_name = contacts.getString("productname");
        String image_url = contacts.getString("imageurl");
        .....
        .....
        String store_name = contacts.getString("storename");
    }
}catch(JSONException e) 
{
    e.printStackTrace();
}

詳細については、Android json チュートリアルを参照してください。

于 2012-08-28T10:29:41.213 に答える
1

json ライブラリを使用するYatayatServiceの実例と、 apache http ライブラリを使用するカスタムがあります。実施方法は、.JsonParser.javagetAllRoutes()

String jsonString = JsonParser.parseJSON(URL);
try {
    JSONObject parentObject = new JSONObject(jsonString);
 } catch (JSONException e) {
    e.printStackTrace();
 }
于 2012-08-28T10:42:02.820 に答える
1

このコードを試してください

 // getting JSON string from URL
    JSONObject json = jParser.getJSONFromUrl(url);

    System.out.println("json is "+json);
    System.out.println("Length"+json.length());

    for (int i = 0; i < json.length(); i++) {
        try {
            String atObj = Integer.toString(i);
            System.out.println(atObj);
            JSONObject jObj = json.getJSONObject(atObj);
            System.out.println(jObj.getString("productname"));
            System.out.println(jObj.getString("imageurl"));
            System.out.println(jObj.getString("producturl"));
        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
于 2012-08-28T11:49:13.290 に答える