Javascript 使用双引号内的双引号从API响应解析JSON

Javascript 使用双引号内的双引号从API响应解析JSON,javascript,json,Javascript,Json,啊。所以noobish,但我似乎无法在Javascript中将这个字符串解析为有效的JSON。我该怎么做?此数据来自Foursquare签入 编辑:这是我试图获取的图像,“签入”属性 在字符串周围使用单引号,而不是双引号: JSON.parse('{"id":"52e2ac6511d28d5cd63ee41f","createdAt":1390586981,"type":"checkin","shout":"Vd","timeZone":"America\/Denver","timeZoneO

啊。所以noobish,但我似乎无法在Javascript中将这个字符串解析为有效的JSON。我该怎么做?此数据来自Foursquare签入

编辑:这是我试图获取的图像,“签入”属性


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

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@email.com"}},"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
包含对Foursquare API调用的JSON响应

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

如果使用jQuery而不是vanilla JS发送AJAX查询,则在查询过程中指定
数据类型:“json”
将自动将解析数据传递给
成功
回调。如果响应类型为
application/json
或等效类型,我相信这是
$.ajax()的默认行为

我似乎无法在Javascript中将此字符串解析为有效的JSON

您不会将字符串解析为JSON。字符串包含JSON,您可以解析它以转换JavaScript数组和对象中的JSON

在您的情况下,您正在寻找

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

因为
checking
属性的值是一个包含JSON的字符串。那你就可以了。

你一开始就不需要这么做。你想写什么?你确定那是字符串,还是从chrome的控制台复制的?如果真的是这样,就像我怀疑的那样,只是JSON.parse(str.slice(1,-1)),它是一个有效的字符串,包装引号在chrome中是修饰性的,因此您可以发现JSON与深度对象的对比。。。如果你提醒()这个字符串,你将看不到引号…编辑以显示有关它来自何处的更多信息。如果有一天数据包含apos呢?我假设这是他想要解析的静态数据,因为数据的来源没有指定。
 var data = JSON.parse(obj.checkin);