我有一个看起来像这样的响应对象-
{
location: '{country:Poland,latitude:50.0575,longitude:19.9802}',
ip: '83.26.234.177',
name: 'John Doe'
}
我正在尝试读取这样的国家/地区名称-
data.forEach(function(datapoint) {
dataObject.ip = datapoint.ip;
var locationObject = datapoint.location; // also tried JSON.parse
console.log(locationObject); //{country:Poland,latitude:50.0575,longitude:19.9802}
console.log(locationObject.country); // undefined
console.log(locationObject.latitude); //undefined
console.log(locationObject.longitude); //undefined
}
得到
undefined
。 最佳答案
datapoint.location
是无效的json。使用String#replace将其转换为有效的json字符串,然后进行解析:
var data = [{
location: '{country:Poland,latitude:50.0575,longitude:19.9802}',
ip: '83.26.234.177',
name: 'John Doe'
}];
data.forEach(function(datapoint) {
var json = datapoint.location.replace(/([^\d\.{}:,]+)/g, '"$1"'); // wrap the keys and non number values in quotes
var locationObject = JSON.parse(json);
console.log(locationObject.country);
console.log(locationObject.latitude);
console.log(locationObject.longitude);
});