将单个JSON对象添加到数组以进行解析和处理

时间:2016-05-02 08:12:26

标签: javascript arrays json

我有以下json对象样本,即:

 {"id":"value1" , "time":"valuetime1"}
 {"id":"value2" , "time":"valuetime2"}
 {"id":"value3" , "time":"valuetime3"}
 {"id":"value4" , "time":"valuetime4"}
 {"id":"value5" , "time":"valuetime5"}
 {"id":"value6" , "time":"valuetime6"}
 {"id":"value7" , "time":"valuetime7"}
 {"id":"value8" , "time":"valuetime8"}

基于以上所述,我想将所有这些json对象添加到一个数组中,然后我可以处理和访问每个json对象的数组,并将time1值与time1值一起提取等等。

我相信我必须使用 JSON.parse ,但不确定如何首先将这些对象添加到数组中,然后还能够解析和访问每个对象的数据。

将上面的每一行视为一个单独的JSON对象,我想将其添加到已解析的数组中。

3 个答案:

答案 0 :(得分:0)

  1. 逐行读取文件(每行是一个单独的json)
  2. 将行json文本解析为JavaScript对象
  3. 将JavaScript对象放入/推送/附加到JavaScript数组

答案 1 :(得分:0)

这不是有效的JSON,所以JSON.parse不起作用,但假设你有一个字符串变量中的文本,你可以用以下内容将它转换为JSON:

data = "[" + data.replace(/\}/g, "},").replace(/,$/,"") + "]";

然后解析它。

更新:

var array = [];

// for each input line

var obj = JSON.parse(line);
array.push(obj);
var id = obj.id;
var time = obj.time;
...

答案 2 :(得分:-1)

感谢回复,但我相信我已经设法解决了我自己的问题。

此外,作为@Mr。上面提到的白色,我确实错误地将我的属性名称排除了 - 感谢。

使用上面的数据,我所追求的是以下内容:

<强>已更新

var s =  '{"id":"value1","time":"valuetime1"},{"id":"value2","time":"valuetime2"},{"id":"value3","time":"valuetime3"},{"id":"value4","time":"valuetime4"},{"id":"value5","time":"valuetime5"}, {"id":"value6","time":"valuetime6"},{"id":"value7","time":"valuetime7"},{"id":"value8","time":"valuetime8"}';

var a = JSON.parse('[' + s + ']');

a.forEach(function(item,i){
  console.log(item.id + ' - '+ item.time);
});

感谢@torazaburo的提醒 - 更新了我应该早些做的答案。