3

从 PHP 获取 JSON 时遇到问题。下面的代码是有效的:

[{
        "vehicleId": "1",
        "status": "Running",
        "position": "x",
        "battery": "25",
        "distanceTravelled": "123",
        "destination": "y",
        "freeSeats": "2",
        "speed": "32"
    }
]

但是,我的代码的新版本就是这样(数字值中没有引号),它给出了一个解析 Json 错误,它没有显示任何内容。

[{ 
        "vehicleId": 1,
        "status": "Running",
        "position": "x",
        "battery": 25,
        "distanceTravelled": 123,
        "destination": "y",
        "freeSeats": 2,
        "speed": 32
    }
]

我在 jsonlint.com 上检查了格式,它是有效的。Eclipse中的日志错误是:

05-09 21:37:25.536: E/Web Console(336): SyntaxError: Unable to parse JSON string at file:///android_asset/www/MobileMan.js:37

    34  xmlhttp.open("GET",url,false);
    35  xmlhttp.send();
    36  var json = xmlhttp.responseText; 
    37  obj = JSON.parse(json);

我还在 Chrome 上的计算机上尝试了 Javascript 代码,一切正常。我无法解决问题。感谢您的回答。

4

1 回答 1

0

好吧,如果解析器抛出错误,则意味着提供给解析的值不是纯 JSON 对象。

关于JSON.parse

  • JSON.parse - 将字符串解析为 JSON,可选择转换解析产生的值。如果要解析的字符串不是有效的 JSON,则会引发 SyntaxError 异常。

另一方面,关于JSON.stringify

  • JSON.stringify - 将值转换为 JSON,如果指定了替换函数,则可选地替换值,或者如果指定了替换器数组,则可选地仅包括指定的属性。

因此,在您的情况下,您首先需要将获得的结果转换为 JSON 对象,然后尝试解析它。

a = [{ 
        "vehicleId": 1,
        "status": "Running",
        "position": "x",
        "battery": 25,
        "distanceTravelled": 123,
        "destination": "y",
        "freeSeats": 2,
        "speed": 32
    }
];

var b = JSON.stringify(a);
var c = JSON.parse(b);
console.log(c)
于 2013-10-12T11:37:12.167 回答