由于空格,无法解析JSON

时间:2017-12-21 18:06:35

标签: javascript jquery json

所以我使用jQuery从一个网站解析JSON(具有以下内容):

{
"code": 200,
"msg": "OK",
"data": {
    "zone": "EXAMPLE",
    "date": "21 Dec 2017",
    "item": {
        "name": "John Doe",
        "age": 53
    }
  }
}

并使用该JSON中的对象来更改HTML内容:

$.getJSON('https://api.example.com/', function(data) {
            document.getElementById('firstObject').innerHTML = data.data.item.name;
            document.getElementById('secondObject').innerHTML = data.data.item.age;

不幸的是,它不会起作用。所以,我尝试使用其他网站(其内容与以前相同,但没有空格):

{"code":200,"msg":"OK","data":{"zone":"EXAMPLE","date":"21 Dec 2017","item":{"name":"Ben Herton","age":24}}}

并使用该JSON中的对象来更改HTML内容:

$.getJSON('https://api.secondExample.com/', function(data) {
            document.getElementById('firstObject').innerHTML = data.data.item.name;
            document.getElementById('secondObject').innerHTML = data.data.item.age;

它有效。但是,遗憾的是我想在我的项目中使用第一个网站。也许任何人都可以帮助我。提前谢谢。

2 个答案:

答案 0 :(得分:0)

很可能是换行,而不是造成问题的空白。

一种选择是将数据作为字符串获取,然后手动解析。将数据作为字符串返回使您也有机会解析其他问题。所以下面的JSON.parse只是一个选项

 $.ajax({url: 'https://api.example.com/',
        dataType: 'string'}).done(function(dataStr) {
    var cleaned = dataStr.replace(/\n/g,' ');
    // other cleaning can be done prior to parsing too
    var data = JSON.parse(cleaned);
    document.getElementById('firstObject').innerHTML = data.name;
    document.getElementById('secondObject').innerHTML = data.age;
 }

答案 1 :(得分:0)

对我有用

var d = {
  "code": 200,
  "msg": "OK",
  "data": {
    "zone": "EXAMPLE",
    "date": "21 Dec 2017",
    "item": {
      "name": "John Doe",
      "age": 53
    }
  }
};


$(document).ready(function() {
  document.getElementById('firstObject').innerHTML = d.data.item.name;
  document.getElementById('secondObject').innerHTML = d.data.item.age;
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="firstObject">
</div>
<div id="secondObject">
</div>