我试图隔离"ip"
对象的JSON
属性。获取JSON
对象的代码是
var parsed;
$.getJSON('//jsonip.com/?callback=?', function(data) {
parsed = JSON.stringify(data, null, 2);
console.log(parsed);
});
它返回此JSON对象。
{
"ip": "118.210.141.127",
"about": "/about",
"Pro!": "http://getjsonip.com",
"reject-fascism": "Women make their own choices. Support abortion rights."
}
由于某种原因,parsed.ip
返回undefined,而不是"118.210.141.127"
如何正确访问ip值?
答案 0 :(得分:2)
parsed = JSON.stringify(data, null, 2);
JSON.stringify执行解析数据的 oposite 。它将JS数据结构转换为JSON,而不是相反。然后,parsed.ip
将字符串读取字符串的ip
属性,而不是已解析的对象。
getJSON
会自动为您解析JSON。所以不要乱用它。
$.getJSON('//jsonip.com/?callback=?', function(data) {
console.log(data.ip);
});
您可能还需要从网址中删除?callback=?
。当您期望JSONP响应而不是JSON响应时使用它。
答案 1 :(得分:1)
使用:
$.getJSON('//jsonip.com/?callback=?', function(data) {
console.log(data.ip); // should output 118.210.141.127
});
当您调用jQuery.getJSON()
时,最终将使用已解析的JavaScript对象而不是JSON字符串执行成功函数。
因此,当您执行JSON.stringify(data, null, 2)
时,您将JavaScript对象转换回JSON字符串。