JSON在控制台日志中作为[object Object]返回

时间:2014-05-06 15:10:41

标签: javascript jquery json

我有点绿色,因为你可以通过我的帖子历史告诉我,但我正在尝试获取JSON对象的关键值,而不是像我想象的那样输出。我做错了什么?

(function($){
    jQuery(document).ready(function(){
        var tableRows = [];
        var headersText = [];
        var $headers = $("th");
        var $rows = $("#table tbody tr").each(function(index) {
          $cells = $(this).find("td");
          tableRows[index] = {};
          $cells.each(function(cellIndex) {
            if(headersText[cellIndex] === undefined) {
              headersText[cellIndex] = $($headers[cellIndex]).text();
            }
            tableRows[index][headersText[cellIndex]] = $(this).text();
          });    
        });
        var tableData = {
            "tableData": tableRows
        };
        /*alert(JSON.stringify(tableData));*/

        $.each([tableData], function(key, value){
            console.log( key + ":" + value );
        });
    });
})(jQuery);
在控制台我得到

0:[object Object]

而不是(示例):

0:[NAME SAMPLE-NAME]

2 个答案:

答案 0 :(得分:6)

当一个对象变成一个字符串,并且串起字符串和对象时,该对象将转换为字符串,并且对象的字符串表示为[object Object]

console.log( key + ":" + value ); // you're concantenating strings and objects

试试这个

console.log( key, value );

作为一个sitenote,$.each迭代对象和数组,因此不需要将对象包装在数组中,或者将数组包装在对象中?

答案 1 :(得分:2)

问题不在于console.log,而是你的迭代。

你的意思是这样做我想:

 $.each(tableData["tableData"], function(key, value){
      console.log( key, value );
 });

 $.each([tableData], function(key, value){
      console.log( key, value );
 });

在原始代码中,您创建了一个包含一个元素的数组 - [tableData],然后对其进行迭代,这并没有任何意义。 TableData是一个哈希 - 哈希没有键和值,它有一组键和值。你需要迭代哈希。