为什么JSON.stringify返回undefined

时间:2016-08-09 10:01:42

标签: javascript json node.js

为什么console.log(JSON.stringify(row.data))返回undefined以及如何修复它?

来自https://jsfiddle.net/ys6j038q/3/

  var data = '{"data":{"time":"2016-08-08T15:13:19.605234Z","x":20,"y":30}}{"data":{"time":"2016-08-08T15:13:19.609522Z","x":30,"y":40}}';

             var sanitized = '[' + data.replace(/}{/g, '},{') + ']';
             var rows = JSON.parse(sanitized);
  console.log(rows);

  for(var row in rows){
    console.log(JSON.stringify(row.data));
    console.log(JSON.stringify(row.data));
  }

4 个答案:

答案 0 :(得分:3)

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in#Array_iteration_and_for...in

你不应该为数组使用for..in。在row中,您有索引,而不是值。

更好的解决方案:

rows.forEach(row => console.log(JSON.stringify(row.data)));

答案 1 :(得分:1)

因为Add as Link变量为row.data

工作示例:

undefined

答案 2 :(得分:1)

因为rows是一个数组。

尝试使用此代替for循环。

rows.forEach(row => console.log(JSON.stringify(row.data)))

rows.forEach(function(row) { console.log(JSON.stringify(row.data)) })

forEach是一个可以在数组上调用的迭代器

  

forEach()方法每个数组元素执行一次提供的函数。

Docs on forEach

你也可以使用for循环

for(var i = 0; i < rows.length; i++) {
    console.log(JSON.stringify(rows[i].data))
}

答案 3 :(得分:1)

除了使用foreach解决方案之外,您还可以使用普通循环执行此操作。

    var data = '{"data":{"time":"2016-08-08T15:13:19.605234Z","x":20,"y":30}}{"data":{"time":"2016-08-08T15:13:19.609522Z","x":30,"y":40}}';

    var sanitized = '[' + data.replace(/}{/g, '},{') + ']';
    var rows = JSON.parse(sanitized);
    console.log(rows);

      for(var i=0;i < rows.length;i++){
         console.log(JSON.stringify(rows[i].data));
      }