【问题标题】:Dealing with JSON result处理 JSON 结果
【发布时间】:2012-03-14 09:48:25
【问题描述】:

我在从场所搜索中读取 JSON 数据时遇到问题。这是我的代码:

xmlhttpRC = new XMLHttpRequest();
url = "https://api.foursquare.com/v2/venues/explore?ll="+pointStrr+"&oauth_token=V5PI2GJ0KDOVH2GAHNHJ5DVLMRKNF440FR1N1HPG0XHX2OBQ&v=2015643&
callback=JSONP";
xmlhttpRC.open("GET", url, true);
xmlhttpRC.onreadystatechange = recCb;      
xmlhttpRC.send(null);
//return recommendedArr;
}

function recCb(data){
//console.log(data);
if(xmlhttpRC.readyState == 4){
    if(xmlhttpRC.status == 200){
        var recRes = xmlhttpRC.response;

        console.log(recRes);

        //console.log(recRes);
        console.log(recRes.meta.code);
    }
}

}

我从服务器得到了我期望的响应,firebug 显示返回了一个 JSON 对象,但我不知道如何从这里访问里面的数据。

console.log(recRes.meta.code) 返回错误:

“recRes.meta 未定义”

我哪里错了? 我想访问场地信息,但我只是使用 meta.code 作为一个简单的测试。 这可能真的很简单,但我很难过!

提前致谢, 罗斯。

【问题讨论】:

    标签: javascript json api foursquare


    【解决方案1】:

    您需要解析 JSON。现代浏览器内置了 JSON.parse,旧版本的 IE 等没有 - 理论上您可以使用 eval(response) 但它会产生安全漏洞。

    There is a library 如果您不能依赖具有现代浏览器的用户来解析它。

    【讨论】:

    • 我会在下面发表评论,但我还没有足够的代表。您可以发布返回 JSON 数据的层次结构吗?
    • 对不起,我才看到这个。通过删除 &callback=JSONP 解决了问题。谢谢你的输入。有什么办法可以给你代表吗?
    【解决方案2】:
    var decodedResp = JSON.parse(recRes);
    if (decodedResp.meta.code === ...) 
    

    JSON-object 只是 JS-object 的表示,请参阅;应该先解析。

    【讨论】:

    • 感谢各位的回复。使用 JSON.parse(recRes) 给出错误: JSON.parse: 意外字符。你认为是因为 JSON 数据以 JSONP 开头吗?
    • JSONP 是另一回事,如 here 所述
    • 我现在请求它为 JSON,它返回为 JSON(... 但我仍然收到错误:JSON.parse: unexpected character var recResD = JSON.parse(recRes);跨度>
    • Hmm... 使用JSONLint,您可能会更好地了解回复有什么问题。
    • 啊,确实,“第 1 行解析错误:JSON({ "meta": { ^ Expecting '{', '['" ?
    猜你喜欢
    • 1970-01-01
    • 2017-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-26
    • 1970-01-01
    相关资源
    最近更新 更多