Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将单个JSON对象添加到数组以进行解析和处理_Javascript_Arrays_Json - Fatal编程技术网

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

Javascript 将单个JSON对象添加到数组以进行解析和处理,javascript,arrays,json,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"}

我有以下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对象的数组,并提取id1值和time1值,以此类推

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

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

  • 逐行读取文件(每行都是单独的json)
  • 将json文本行解析为JavaScript对象
  • 将/push/append JavaScript对象放入JavaScript数组

  • 这不是有效的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;
    ...
    

    感谢您的回答,但我相信我已经解决了自己的问题

    此外,正如上面提到的@Mr.White,我的财产名称有误,我现在已经分类了——谢谢

    根据上述数据,我所追求的是以下几点:

    已更新

    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的提醒-我更新了我的答案,我本应该早做的。

    问题不清楚。。输入对我来说似乎是错误的…您可以首先使用编辑器或脚本编辑文件,使其成为JSON数组,并且当您确定值的类型为JSON时,可以使用yes JSON.parse为什么要使用id1、id2和time1、time2?属性名通常应该是相同的。我基本上希望获取每个json对象,解析它并将其添加到数组中进行处理。属性名称是不同的b/c它们与数据库表中的不同记录相关。请澄清,这些对象的形式是您正在读取的文件,还是来自某个地方的字符串?或者它们只是你的程序可以使用的常规的旧JS对象,你想把它们放入一个数组中吗?谢谢你的回复,但是把每一行看作一个单独的JSON对象,我只想把它们全部添加到一个数组中。如果您单独获取每一行并通过JSONLint运行它,它将返回为有效。如果这是一个JSON格式的字符串,实际上我不认为它是,那么与其使用字符串算术构造JSON,不如执行
    input.split('\n').map(JSON.parse)
    。为什么要字符串化然后立即解析?你会得到你开始的东西。另外,在函数中,
    a[i]
    完全相同。