我该如何解析这个JSON?

时间:2009-12-05 07:35:11

标签: jquery json parsing

我正在使用返回以下内容的图书API

var _OLBookInfo = {
    "ISBN:234234234234234": {
        "bib_key": "ISBN:234234234234234", 
        "preview": "noview", 
        "preview_url": "http://openlibrary.org/b/adsfasdfa", 
        "info_url": "http://openlibrary.org/b/adsfasdf", 
        "details": {
            "publishers": [
                "W. H. sdafasdfasdf"
            ]
     }
};

如何使用$.get()

的回调参数使用jQuery解析此问题

具体而言,如何轻松访问详细信息 - >出版商

更新

     $.post("/Home/LookupBook", { query: lookuptxt.val() },
               function (data) {
                   alert(data); //returns proper json data
                   alert(data.details.publishers[0]); // get erro saying details.publishers[0] is null
    }, 
   "json");

4 个答案:

答案 0 :(得分:2)

您不必在JS中解析JSON字符串。只需查看jQuery的$ .getJSON()方法。

http://docs.jquery.com/Ajax/jQuery.getJSON

示例:

$.getJSON( url, data, function(response){
           alert(response['ISBN:234234234234234'].details.publishers[0]);
           } );

更新:我的坏 -

我刚看到你的调用不只返回JSON,而是返回JS文件。

您可以做的是eval()$.get()

返回的数据
$.get( url, data, funcCallback);
function funcCallback(data, status){
  eval(data);
  alert(_OLBookInfo['ISBN:234234234234234'].details.publisher[0]);
}

顺便说一句,您的JSON字符串无效。它后面有一个缺少花括号。

您也可以尝试$ .getScript():

http://docs.jquery.com/Ajax/jQuery.getScript

答案 1 :(得分:1)

嗯,JSON不需要在JavaScript中解析。这有点从服务器返回该格式的数据。

答案 2 :(得分:1)

不要将JSON与JavaScript混淆。您在该示例中提供的是JavaScript语句,特别是赋值语句。 _OLBookInfo的值是大数据哈希值。

简短回答:要使您的示例有效JSON,请删除var _OLBookInfo =部分(以及尾随分号)。 JSON本身就是对象文字或数组文字。这是 表达式 ,而非 声明

所以问题不在于您的JavaScript或jQuery,而在于API。无论你使用哪种API,如果他们说它返回 JSON ,就会误导你。如果它是您自己的API,您可以轻松地将其修复为有效的JSON。

答案 3 :(得分:0)

使用jQuery.getJSON()