Javascript json对象-不获取输出,而是获取object.object

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+

我已经写了下面的代码,但是在输出中我得到了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 }.附在身体上; }; 警觉和成功; } 这是一段

第一行:

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的操作可以完成此任务