访问JSON响应

时间:2017-11-22 02:48:27

标签: json

我正在存储REST Get请求的响应并尝试访问,如下所示

final JSONObject receivedItem =  new   JSONObject(response.readEntity(String.class));

这是样本回复,

[
    {
        "timeStamp": 1511136000000,
        "contextKeys": [
            {
                "tKey": "Test1",
                "contextKey": "Location",
                "contextValue": "San Jose",
                "eCount": 3
            },
            {
                "tKey": "Test1",
                "contextKey": "Name",
                "contextValue": "User1",
                "eCount": 3
            } 
     }
]  

我收到以下错误,

org.json.JSONException: A JSONObject text must begin with '{' at character 1
    at org.json.JSONTokener.syntaxError(JSONTokener.java:496)
    at org.json.JSONObject.<init>(JSONObject.java:180)
    at org.json.JSONObject.<init>(JSONObject.java:403)

任何线索?

由于

2 个答案:

答案 0 :(得分:1)

如果您的问题在于存储和访问json响应,请尝试此响应;

我假设您使用的是javascript;无论如何,核心理念是一样的;

var jsonStorage;
$.getJSON('your url',(json) => {
    jsonStorage = json;
});

console.log(jsonStorage) //your jsonresponse is now available here;

答案 1 :(得分:1)

正如Rajkumar指出的那样,在你的例子中有一个缺少的近距离括号 - 但这可能只是一个简单的输入错误。

实际的错误消息是A JSONObject text must begin with '{',这是因为JSON对象就是对象。您需要使用JSONArray来解析示例JSON,如下所示:

final JSONArray receivedItem = new JSONArray(response.readEntity(String.class));

这可能会改变你的其他一些代码来处理这个数组与对象的对比。