2013-05-10 66 views
3

我在从PHP获取JSON时遇到问题。在下面的代码是作品:无法解析我的Phonegap项目中的JSON字符串错误

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

但是,我对我的代码是新版本出现这样(没有引号数值),并给出了解析JSON的错误,它doen't什么表现。

[{ 
     "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); 

我也在我的电脑上试过Javascript代码,并且一切正常。我无法解决问题。感谢您的回答。

+0

http://json.parser.online.fr/'语法错误:。意外的令牌v' ... – Selvin 2013-05-10 13:07:17

+1

你有问题的错字你错过了一个地方'“'这绝不能在你的实际代码中,因为你说它通过'jsonlint' – 2013-05-10 13:08:45

+0

报价缺少'vehileId'标记。它应该是''vehicleId''而不是'vehicleId'' – vijay 2013-05-10 13:10:12

回答

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)