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 回答