92

JSONHttp get 応答からオブジェクトを取得したい:

Http get の現在のコードは次のとおりです。

protected String doInBackground(String... params) {

    HttpClient client = new DefaultHttpClient();
    HttpGet request = new HttpGet(params[0]);
    HttpResponse response;
    String result = null;
    try {
        response = client.execute(request);         
        HttpEntity entity = response.getEntity();

        if (entity != null) {

            // A Simple JSON Response Read
            InputStream instream = entity.getContent();
            result = convertStreamToString(instream);
            // now you have the string representation of the HTML request
            System.out.println("RESPONSE: " + result);
            instream.close();
            if (response.getStatusLine().getStatusCode() == 200) {
                netState.setLogginDone(true);
            }

        }
        // Headers
        org.apache.http.Header[] headers = response.getAllHeaders();
        for (int i = 0; i < headers.length; i++) {
            System.out.println(headers[i]);
        }
    } catch (ClientProtocolException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    } catch (IOException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
    return result;
}

convertSteamToString 関数は次のとおりです。

private static String convertStreamToString(InputStream is) {

    BufferedReader reader = new BufferedReader(new InputStreamReader(is));
    StringBuilder sb = new StringBuilder();

    String line = null;
    try {
        while ((line = reader.readLine()) != null) {
            sb.append(line + "\n");
        }
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            is.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    return sb.toString();
}

現在、文字列オブジェクトを取得しています。JSON オブジェクトを取得するにはどうすればよいですか。

4

10 に答える 10

73

得られる文字列は JSON Object.toString() だけです。これは、JSON オブジェクトを取得することを意味しますが、文字列形式です。

JSON オブジェクトを取得することになっている場合は、次のように入力できます。

JSONObject myObject = new JSONObject(result);
于 2013-08-06T07:23:23.927 に答える
13

これを実行してJSONを取得します

String json = EntityUtils.toString(response.getEntity());

詳細はこちら: HttpResponse から json を取得

于 2013-08-06T07:29:33.517 に答える
8

正確な JSON 出力を確認しないと、実際に機能するコードを提供することは困難です。このチュートリアルは非常に便利ですが、次のようなものを使用できます。

JSONObject jsonObj = new JSONObject("yourJsonString");

次に、次を使用してこの json オブジェクトから取得できます。

String value = jsonObj.getString("yourKey");
于 2013-08-06T07:24:01.550 に答える
3

JSONObject以下のように使用する必要があります。

String mJsonString = downloadFileFromInternet(urls[0]);

JSONObject jObject = null;
try {
    jObject = new JSONObject(mJsonString);
} 
catch (JSONException e) {
    e.printStackTrace();
    return false;
}

...

private String downloadFileFromInternet(String url)
{
    if(url == null /*|| url.isEmpty() == true*/)
        new IllegalArgumentException("url is empty/null");
    StringBuilder sb = new StringBuilder();
    InputStream inStream = null;
    try
    {
        url = urlEncode(url);
        URL link = new URL(url);
        inStream = link.openStream();
        int i;
        int total = 0;
        byte[] buffer = new byte[8 * 1024];
        while((i=inStream.read(buffer)) != -1)
        {
            if(total >= (1024 * 1024))
            {
                return "";
            }
            total += i;
            sb.append(new String(buffer,0,i));
        }
    }
    catch(Exception e )
    {
        e.printStackTrace();
        return null;
    }catch(OutOfMemoryError e)
    {
        e.printStackTrace();
        return null;
    }
    return sb.toString();
}

private String urlEncode(String url)
{
    if(url == null /*|| url.isEmpty() == true*/)
        return null;
    url = url.replace("[","");
    url = url.replace("]","");
    url = url.replaceAll(" ","%20");
    return url;
}

これがあなたに役立つことを願っています..

于 2013-08-06T07:22:40.310 に答える
0

String を JSONObject に変換する JSONObject コンストラクターがあります。

http://developer.android.com/reference/org/json/JSONObject.html#JSONObject(java.lang.String)

于 2013-08-06T07:22:28.190 に答える
0

API の応答が Java オブジェクトの場合、Outputstream から取得した文字列は、次のような json 文字列形式にする必要があります。

{\"name\":\"xyz\", \"age\":21}

. これはさまざまな方法で JSON オブジェクトに変換できますが、そのうちの 1 つの方法は Google GSON ライブラリを使用することです。 GsonBuilder builder = new GsonBuilder().setPrettyPrinting(); Gson gson = builder.create(); <javaobject> = gson.fromJson(<outputString>, <Classofobject>.class);

于 2021-09-08T07:52:10.430 に答える