JavaScript JSON对象对象错误

JavaScript JSON Object Object error

本文关键字:对象 错误 JSON JavaScript      更新时间:2024-02-21

我正试图从下面的数据中打印出键和值的名称,例如"Player 1'-'ball,'hat'"answers"Player 2-'ball,'hat'"。所以键有多个值名称,但我不确定如何打印出来。**我得到了"[object object]"作为响应**。有人能帮我理解一下并设法解决这个问题吗。

数据

{
    "Player1": {
        "ball": 1,
        "hat": 2
    },
    "Player2": {
        "ball": 1,
        "hat": 2,
    }
}

JavaScript

$.getJSON('data.json', function (data) {
    var response = data;
    for (key in response){
        alert("key: " + key + "value :" + response[key]);
    }
});

在任何现代浏览器中,最简单的方法是使用Object.keys()并将结果连接到一个字符串中,如下所示:

for (key in response){
    alert("key: " + key + " value :" + Object.keys(response[key]).join(' '));
}

结果:

key:Player1值:球帽
key:Player2值:球帽

你可以在这里测试一下。

打印对象时使用JSON.stringify(response[key])

$.getJSON('data.json', function (data) {
    var response = data;
    for (key in response){
        alert("key: " + key + "value :" + JSON.stringify(response[key]));
    }
});

或使用response[key].ball, response[key].hat

JSONstringify功能在此进行救援。由于大多数内部函数都将数据参数作为字符串或有时作为缓冲区。因此,您可以使用以下代码:-

    var response = {
    "Player1": {
        "ball": 1,
        "hat": 2
    },
    "Player2": {
        "ball": 1,
        "hat": 2,
    }
}
var dataString = JSON.stringify(response);

现在使用dataString通过不同的呼叫进行发送和接收。

这里有一种打印对象内容的方法。Object.keys()方法用于访问玩家的"项目"并获取数组格式的项目已更新

var response = {
    "Player1": {
        "ball": 1,
            "hat": 2
    },
        "Player2": {
        "ball": 1,
            "hat": 2,
    }
};
for (player in response) {
    var items = Object.keys(response[player]);
    var itemText = "";
    for (i = 0; i < items.length; i++) {
        itemText += " '" + items[i] +  "'";
    }
    console.log(player +  " -" + itemText);
    
    //alternative way, suggested by NickCraver
    console.log(player +  " - "+ Object.keys(response[player]).map(function(k) { return ''''+k+''''; }).join(' ') );
}