繁体   English   中英

如何将数组追加到现有的json数组并写入节点js中的文件

[英]How to append arrays to existing json array and write to file in node js

我有一个example.json文件。

{
  "tc" :
  [
    {"name" : "tc_001"},
    {"name" : "tc_002"},
    {"name" : "tc_003"},
    {"name" : "tc_004"},
    {"name" : "tc_005"}
  ]
}

在这里,我需要向第tc[0]th索引添加另一个数组。 Node JS我尝试了以下操作:

var fs = require('fs');

var obj = JSON.parse(fs.readFileSync('example.json', 'utf8'));
var arr1 = {bc :[{name:'bc_001'}]}
var arr2 = {bc :[{name:'bc_002'}]}
obj.tc[0] = arr1;
obj.tc[0] = arr2;

但是在打印该objobj.tc[0]已替换为arr2的值。 我要达到的最终结果是:

{
  "tc" :
  [
    {
       "name" : "tc_001"
       "bc" :
       [
            {"name" = "bc_001"},
            {"name" = "bc_002"}
       ]
    },
    {"name" : "tc_002"},
    {"name" : "tc_003"},
    {"name" : "tc_004"},
    {"name" : "tc_005"}
  ]
}

我也想将此写回相同的json文件。 我试图在这里实现一个包含多个具有唯一名称的tc的文件。 此外,一个tc可以具有多个bc ,并且bc具有名称属性。

我也接受关于更好的json结构以支持此概念的建议。

一种将多个项目添加到对象的解决方案。

它使用对象o放置新值,并使用值对象v包含要分配的键和项目。

在其内部迭代键并构建新数组(如果尚未存在)。 然后将所有值推入数组。

 function add(o, v) { Object.keys(v).forEach(k => { o[k] = o[k] || []; v[k].forEach(a => o[k].push(a)); }); } var obj = { "tc": [{ "name": "tc_001" }, { "name": "tc_002" }, { "name": "tc_003" }, { "name": "tc_004" }, { "name": "tc_005" }] }; add(obj.tc[0], { bc: [{ name: 'bc_001' }] }); add(obj.tc[0], { bc: [{ name: 'bc_002' }] }); document.write('<pre>' + JSON.stringify(obj, 0, 4) + '</pre>'); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM