0

JSON 配列からこのオブジェクトを解析したい:

{..."平均": 8.492619161922457352960767294、"シンボル": "mtgoxUSD"、"低": 8.391000000000}

JSONArray は動的であるため、配列内の 73 番目、74 番目、または 75 番目のオブジェクトである場合があり、配列内のどのオブジェクトにも名前がありません。現在、このコードを使用して解析しています。特定のオブジェクトが 75 番目の位置にある場合は問題なく動作しますが、そうでない場合はクラッシュします。

try {
         JSONArray json = JSONfunctions2.getJSONfromURL("http://bitcoincharts.com/t/markets.json");
         JSONObject  forex = json.getJSONObject(75);
         String btc = forex.getString("avg");            
         currencyBTC = Double.parseDouble(btc);  
 }catch(JSONException e)        {
     Log.e("log_tag", "Error parsing data "+e.toString());
 }       

配列内のオブジェクトには名前がないため、属性によってオブジェクトを識別することは可能ですか? この問題を解決するにはどうすればよいですか? 前もって感謝します。


編集:

これは多少機能しますが、配列内の最後のオブジェクトからの値のみを返します。最後のオブジェクトだけでなく、特定のオブジェクトを解析できるようにするにはどうすればよいですか? ...

 try {
JSONArray jArray = JSONfunctions2.getJSONfromURL("http://bitcoincharts.com/t/markets.json");
String symbol = "mtgoxUSD";
for (int i = 0; i < jArray.length(); i++) {
    JSONObject forex = jArray.getJSONObject(i);
    String mtgoxUSD = forex.getString("symbol");
    if (mtgoxUSD == symbol) {
        String btc = forex.getString("avg");            
        double currencyBTC = Double.parseDouble(btc);
    }
}
} catch (Exception e) {
Log.e("log_tag", "Error parsing data "+ e.toString());
}
4

2 に答える 2

1

これは、Android アプリケーションで JSON を解析する方法です。

String s = client.getBaseURI("http://bitcoincharts.com/t/markets.json"); // Json format
JSONArray array = new JSONArray(s);
JSONObject obj;     
for (int i = 0; i < array.length(); i++) {
     obj = (JSONObject) array.get(i);
     double average =Double.parsedouble(obj.get("avg").toString()));
     String symbol = obj.get("symbol").toString();
     double low = Double.parsedouble(obj.get("low").toString());
}

また、HTTP クライアント ライブラリを使用してサーバーからデータをフェッチすることも付け加えておきます。HTTP クライアントの使用方法の詳細については、次のリンクで私の回答を確認してください: HTTP クライアント

于 2012-07-25T20:49:38.180 に答える
0

「75」もダイナミックになるんですか?つまり、ユーザー入力に基づいて数値が変更されますか? その場合、そのためのハンドルが必要になりますが、とにかく、for次のようなループを使用してください。

try {
    JSONArray jArray = JSONfunctions2.getJSONfromURL("http://bitcoincharts.com/t/markets.json");
    String symbol = "mtgoxUSD";
    for (int i = 0; i < jArray.length(); i++) {
        JSONObject forex = jArray.getJSONObject(i);
        String mtgoxUSD = forex.getString("symbol");
        if (mtgoxUSD == symbol) {
            String btc = forex.getString("avg");            
            double currencyBTC = Double.parseDouble(btc);
        }
    }
} catch (Exception e) {
    Log.e("log_tag", "Error parsing data "+ e.toString());
}
于 2012-07-25T20:44:11.610 に答える