Javascript json对象-不获取输出,而是获取object.object
我已经写了下面的代码,但是在输出中我得到了object.object。你能告诉我问题和解决办法吗 代码 $document.readyfunction{ 成功; $.getJSON'http://api.openweathermap.org/data/2.5/weather?appid=f97a52c4251d786439d16642a76845d3&q=london,函数数据{ JSON.stringifydata; var项目=[]; $。每个数据、功能键、val{ items.push+val+; }; $ , { 班级:我的新名单, html:items.join }.附在身体上; }; 警觉和成功; } 这是一段 第一行:Javascript json对象-不获取输出,而是获取object.object,javascript,jquery,angular,Javascript,Jquery,Angular,我已经写了下面的代码,但是在输出中我得到了object.object。你能告诉我问题和解决办法吗 代码 $document.readyfunction{ 成功; $.getJSON'http://api.openweathermap.org/data/2.5/weather?appid=f97a52c4251d786439d16642a76845d3&q=london,函数数据{ JSON.stringifydata; var项目=[]; $。每个数据、功能键、val{ items.push+
JSON.stringify(data);
不执行任何操作,因为您没有将结果分配给任何对象。它不会改变原始数据
其次,[object object]是在对象上调用toString的默认行为。JSON中有对象。比如这个家伙:
"coord": {
"lon": -0.13,
"lat": 51.51
}
坐标的值是一个具有lon和lat属性的对象。如果您想以某种人类可读的格式打印这些值,您需要告诉它如何执行此操作
超级快速和肮脏的方式是按照@JaredSmith在评论中的建议,比如:
items.push( "<li id='" + key + "'>" + JSON.stringify(val) + "</li>" );
这就给了你:
$document.readyfunction{
成功;
$.getJSON'http://api.openweathermap.org/data/2.5/weather?appid=f97a52c4251d786439d16642a76845d3&q=london,函数数据{
JSON.stringifydata;
var项目=[];
$。每个数据、功能键、val{
items.push+JSON.stringifyval+;
};
$ , {
班级:我的新名单,
html:items.join
}.附在身体上;
};
警觉和成功;
}
这是一段
在这里,您可以看到如果我将其登录到控制台,它会是什么样子。我们得到了一个正则对象:
你有一个响应,它是一个对象,所以你需要像这样处理这个对象
items.push+JSON.stringifyval+ 将此多维JavaScript对象视为平面数组 当你得到一个对象时,你必须像这样在里面迭代
$.each( data, function( key, val ) {
if (typeof val == 'object') {
$.each( val, function( key, val ) {
items.push( "<li id='" + key + "'>" + val + "</li>" );
});
}
else {
items.push( "<li id='" + key + "'>" + val + "</li>" );
}
});
你在这个问题上泄露了你的API密钥。您可能希望稍后对其进行更改。您正在将返回对象的值转换为字符串。如果它们已经是字符串、数字、布尔值等,则没有问题,但对象会转换为[object]。在调用JSON.stringify时包装val。我建议您学习调试。如果您使用的是chrome,那么chrome开发者工具会告诉您问题出在哪里。顺便说一下,如果val是一个简单的对象,您甚至不需要执行JSON.stringify。假设val对象具有name键,则执行类似于val.name的操作可以完成此任务