2017-10-07 25 views
0

我试图从JSON响应中获取值。我得到的一切工作,除了从以下字符串中提取一个数组:无法使用GSON将一些JSON解析为JsonArray

{"o":"1.18988","h":"1.18993","l":"1.18963","c":"1.18993"} 

我知道GSON试图解析它,因为我得到这个错误:

Exception in thread "main" java.lang.IllegalStateException: Not a JSON Array: {"o":"1.18988","h":"1.18993","l":"1.18963","c":"1.18993"} 

我使用下面的代码试图解析它:

final JsonElement midElement = obj.get("mid"); 
     final JsonArray midArray = midElement.getAsJsonArray(); 
     for(Object rate : midArray){ 
      final JsonObject rateObj = (JsonObject)rate; 
      final JsonElement openElement = rateObj.get("o"); 
      open = openElement.getAsFloat(); 

      final JsonElement highElement = rateObj.get("h"); 
      high = highElement.getAsFloat(); 

      final JsonElement lowElement = rateObj.get("l"); 
      low = lowElement.getAsFloat(); 

      final JsonElement closeElement = rateObj.get("c"); 
      close = closeElement.getAsFloat(); 
     } 
+0

我想我昨天回答它本身https://stackoverflow.com/questions/46587719/json-object-cannot-be-converted-to-json-array/46587951#46587951 – Optional

+0

Json数组应该括在括号内? {[“o”:“1.18988”,“h”:“1.18993”,“l”:“1.18963”,“c”:“1.18993”]} – kotacc

回答

1

首先它看起来不像一个有效的JSON数组。它应该看起来像这样

[{"o":"1.18988","h":"1.18993","l":"1.18963","c":"1.18993"}] 

试试以下代码以JSON格式解析它。

JSONObject jsonObject = new JSONObject(jsonString); 
    JSONArray jsonArray = jsonObject.getJSONArray("mid"); 
    for (int i = 0; i < jsonArray.length(); i++) {    
     jsonArray.getJSONObject(i).getString("o"); 
    } 

然后将其转换为您的首选数据形式。