我如何使用JSON数据?

时间:2016-11-01 13:50:36

标签: javascript json

当我查询服务器时,我得到一个JSON文件作为回报。我收到的JSON文件将采用以下格式。

{
  "head": {
    "link": [],
    "vars": ["bookName", "author"]
  },
  "results": {
    "distinct": false,
    "ordered": true,
    "bindings": [
      {
        "bookName": {
          "type": "literal",
          "xml:lang": "en",
          "value": "Of Mice and Men"
        },
        "author": {
          "type": "literal",
          "xml:lang": "en",
          "value": "John Steinbeck"
        }
      }
    ]
  }
}

这是我到目前为止所做的:

 $.ajax({ 
    dataType: "jsonp",
    url: queryUrl,
    success: function(data) {    
        // get the table element
        var table = $("#results"); 


        // get the sparql variables from the 'head' of the data.
        var headerVars = data.head.vars; 

        // using the vars, make some table headers and add them to the table;
        var trHeaders = getTableHeaders(headerVars);
        table.append(trHeaders);  

        // grab the actual results from the data.                                          
        var bindings = data.results.bindings;

        var book = data.results.bindings[1].bookName.value;

        // for each result, make a table row and add it to the table.
        var numberOfBooks = 0;
        for(rowIdx in bindings){
            table.append(getTableRow(headerVars, bindings[rowIdx]));
            numberOfBooks++;
        }             

        document.getElementById("searched-for").innerHTML="<h1>You seach for " + '"' + input + '"' + " and we found " + numberOfBooks + " books </h1>";
    }
});         

我希望能做的是这样的事情:

var book = data.results.binding[1].bookName.value;

1 个答案:

答案 0 :(得分:1)

试试这个:

$.ajax({ 
dataType: "jsonp",
url: queryUrl,
success: function(data) {    
    // get the table element
    var table = $("#results"); 


    // get the sparql variables from the 'head' of the data.
    var headerVars = data.head.vars; 

    // using the vars, make some table headers and add them to the table;
    var trHeaders = getTableHeaders(headerVars);
    table.append(trHeaders);  

    // grab the actual results from the data.                                          
    var bindings = data.results.bindings;

    var book;

    if(bindings && bindings.length) {
        book = bindings[0].bookName.value;
    }

    // for each result, make a table row and add it to the table.
    var numberOfBooks = 0;
    for(rowIdx in bindings){
        table.append(getTableRow(headerVars, bindings[rowIdx]));
        numberOfBooks++;
    }             

    document.getElementById("searched-for").innerHTML="<h1>You seach for " + '"' + input + '"' + " and we found " + numberOfBooks + " books </h1>";
}
}); 

但如果它存在,那只会得到第一本书。