2014-01-24 149 views
-1

呃。所以没什么好说的,但我似乎无法将此字符串解析为Javascript中的有效JSON。我该怎么办?这些数据来自Foursquare签入。从双引号中的双引号的API响应中解析JSON

编辑:这是我想要的,在“签入”属性来获取 enter image description here

"{"id":"52e2ac6511d28d5cd63ee41f","createdAt":1390586981,"type":"checkin","shout":"Vd","timeZone":"America\/Denver","timeZoneOffset":-420,"user":{"id":"76097213","firstName":"SpencerTesting","lastName":"GardnerTesting","gender":"none","relationship":"self","photo":"https:\/\/foursquare.com\/img\/blank_boy.png","tips":{"count":0},"lists":{"groups":[{"type":"created","count":1,"items":[]}]},"homeCity":"Pleasant Grove, UT","bio":"","contact":{"email":"[email protected]"}},"venue":{"id":"4b83ec97f964a520d81631e3","name":"Joseph Smith Building","contact":{},"location":{"address":"770 E University Pkwy","crossStreet":"at BYU","lat":40.245901424248,"lng":-111.65174603462219,"postalCode":"84604","cc":"US","city":"Provo","state":"UT","country":"United States"},"categories":[{"id":"4bf58dd8d48988d198941735","name":"College Academic Building","pluralName":"College Academic Buildings","shortName":"Academic Building","icon":"https:\/\/ss1.4sqi.net\/img\/categories\/education\/default.png","parents":["College & University"],"primary":true}],"verified":false,"stats":{"checkinsCount":1695,"usersCount":281,"tipCount":1},"likes":{"count":0,"groups":[]},"beenHere":{"count":0}}}" 
+0

你不应该首先这样做。你想写什么? – SLaks

+4

你确定这是字符串,还是你从Chrome的控制台复制它?如果它真的是这样,只是JSON.parse(str.slice(1,-1)) – dandavis

+0

正如我所怀疑的那样,它是一个有效的字符串,换行符在chrome中是整型的,因此您可以发现JSON与深层对象。 ..如果你alert()字符串,你将看不到引号... – dandavis

回答

2

使用字符串周围的单引号,而不是双引号的图像:

JSON.parse('{"id":"52e2ac6511d28d5cd63ee41f","createdAt":1390586981,"type":"checkin","shout":"Vd","timeZone":"America\/Denver","timeZoneOffset":-420,"user":{"id":"76097213","firstName":"SpencerTesting","lastName":"GardnerTesting","gender":"none","relationship":"self","photo":"https:\/\/foursquare.com\/img\/blank_boy.png","tips":{"count":0},"lists":{"groups":[{"type":"created","count":1,"items":[]}]},"homeCity":"Pleasant Grove, UT","bio":"","contact":{"email":"[email protected]"}},"venue":{"id":"4b83ec97f964a520d81631e3","name":"Joseph Smith Building","contact":{},"location":{"address":"770 E University Pkwy","crossStreet":"at BYU","lat":40.245901424248,"lng":-111.65174603462219,"postalCode":"84604","cc":"US","city":"Provo","state":"UT","country":"United States"},"categories":[{"id":"4bf58dd8d48988d198941735","name":"College Academic Building","pluralName":"College Academic Buildings","shortName":"Academic Building","icon":"https:\/\/ss1.4sqi.net\/img\/categories\/education\/default.png","parents":["College & University"],"primary":true}],"verified":false,"stats":{"checkinsCount":1695,"usersCount":281,"tipCount":1},"likes":{"count":0,"groups":[]},"beenHere":{"count":0}}}') 

适合我。

在该字符串是动态生成的,实际上的情况下包含"字符,请按照dandavis的使用JSON.parse(str.slice(1,-1))其中str包含JSON响应你的Foursquare的API调用中删除的"的建议。

但是,这不应该是必要的,因为周围的引号是打印到控制台的副作用。实际上,checkin键的值是完全有效的JSON,可以使用JSON.parse定期解析。但是,如果从控制台中复制,则需要更换额外的",因为所有内部"未在控制台中显示为已转义。

如果您使用的是jQuery和香草不是JS送你的AJAX的查询,在查询过程中指定dataType: 'json'将自动导致传递给success回调解析的数据。如果响应类型为application/json或等效,我相信这是$.ajax()的默认行为。

+0

以及如果一天中的数据包含一个“ – dandavis

+1

我认为这是他想分析的一些静态数据,因为没有指定数据的来源。 – sushain97

1

我似乎无法在这个字符串解析成有效的JSON Javascript中

你不解析字符串 JSON。字符串包含 JSON,并解析它以转换JavaScript数组和对象中的JSON。

在你的情况,你正在寻找

var data = JSON.parse(obj.checkin); 

因为checking属性的值是一个包含JSON字符串。那么你可以access the properties of the object