如何阅读JsonElement? “这不是JSON数组。”

时间:2017-06-01 17:16:58

标签: java android arrays json

我有这样的JsonElement:

{
    "76800769": {
        "prosjekLat": 45.784661646364,
        "prosjekLong": 15.947804310909,
        "brojCelija": 11
    },
    "76800772": {
        "prosjekLat": 45.7847808175,
        "prosjekLong": 15.9477082775,
        "brojCelija": 4
    },
    "2946694": {
        "prosjekLat": 45.78475167,
        "prosjekLong": 15.9475975,
        "brojCelija": 1
    },
    "76829440": {
        "prosjekLat": 45.784726386,
        "prosjekLong": 15.947961766,
        "brojCelija": 5
    }
}

我也创建了Model:

public class AddMarker {    
    int cellId;    
    double longitude;    
    double latitude;
}

我想阅读JSON文件并将值放到List<AddMarker>

我正在尝试这个:

JsonElement data = response.body();
                JsonObject obj = data.getAsJsonObject();
                JsonArray arr = obj.getAsJsonArray();

但我得到一个错误:“这不是JSON数组。”

5 个答案:

答案 0 :(得分:1)

您的JSON不是数组。

Json Array syntax指示为了拥有一个数组,您的对象必须格式化为:

[
    {
        ...
    },
    {
        ...
    },
    ...
    {
        ...
    }
]

现在你将外方括号([])作为花括号({})。将其更改为方括号,您的代码应该正确运行。

答案 1 :(得分:0)

您正在尝试从单个对象创建一个数组:JsonArray arr = obj.getAsJsonArray(),其中obj仅用于此示例: “76829440”:{         “prosjekLat”:45.784726386,         “prosjekLong”:15.947961766,         “brojCelija”:5     }

你需要从响应中获取正文并使用所有这些对象创建一个数组,而不是从单个对象

答案 2 :(得分:0)

您可以使用:

JsonObject json = new JsonObject(data);
String str1 = json.getString("76800769");
JsonObject json2 = new JsonObject(str1);
float str11 = json2.getFloat("prosjekLat");

答案 3 :(得分:0)

使用 org.json liberary,您可以按如下方式阅读该元素:

<div id="record">

</div>

给出了以下输出:

  

11
  45.784661646364
  15.947804310909

答案 4 :(得分:0)

我需要将JSON对象转换为数组。在php中只使用array_values($ json)。 我用这个解决了我的问题:

json_encode(array_values($izracunatProsjek), true);