0

// ここに json ファイルを配置すると、配列名ではなく配列の内部要素のみが返されるため、 // 解析しようとしましたが、配列名がないと実行できませんでした

//私のjson

{
"to": "USD", 
"rate": 0.98087299999999999, 
"from": "CAD", 
"v": 1.961746
}

// URL から getJson へのコード

public JSONObject getJSONFromUrl(String 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;

        }

// パースする

url = "http://rate-exchange.appspot.com/currency?from=CAD&to=INR&q=5";

                JSONParser jParser = new JSONParser();
                json = jParser.getJSONFromUrl(url);


                data_to = json.getString("to");
                data_rate = json.getDouble("rate");
                data_from = json.getString("from");
                data_value =json.getDouble("v");
4

1 に答える 1

1

問題はあなたのJSON

{
   "to": "USD", 
   "rate": 0.98087299999999999, 
   "from": "CAD", 
   "v": 1.961746
}

そうではありませんJSONArrayJSONObject、配列は含まれていませんが、キーと値のペアのみが含まれています。したがって、それを Object として割り当てて、そこからデータを取得する必要があります。

JSONObject o = new JSONObject(sourceString);
String from = o.getString("from"); // getting value CAD with key from
于 2013-03-16T14:40:16.970 に答える