【问题标题】:Modify existing json file using nodejs使用nodejs修改现有的json文件
【发布时间】:2020-07-17 06:53:26
【问题描述】:

我有一个名为a1.json的json文件->(结构如下)

{ "Key1" :
[ { 
    "Key11" : "Value11" , 
    "Key12" : "Value12"
  },
 {
    "Key21" : "Value21" , 
    "Key22" : "Value22"
 }
]
}

我正在遍历具有某些值的数据文件。如果值匹配,我将只需要向该特定字典添加一个额外的键。例如-

{ "Key1" :
    [ { 
        "a" : "A1" , 
        "b" : "B1"
      },
     {
        "a" : "A2" , 
        "b" : "B2"
     }
    ]
}

我想在该列表中添加一个键值对,其键值“a”为“A1”。所以最终的结果会是这个样子-

{ "Key1" :
    [ { 
        "a" : "A1" , 
        "b" : "B1" ,
        "New_Key_Array" : 
                [
                     {
                        "Found" : "yes",
                        "Correctness" : "true"
                     }
                ]
      },
     {
        "a" : "A2" , 
        "b" : "B2"
     }
    ]
 } 

我该怎么做。我对 JSON 格式有点陌生,还在学习如何编辑现有的 JSON 文件?

【问题讨论】:

  • 用fs.readFile读取文件,通过JSON.parse运行,修改它,然后用fs.writeFile写回。
  • @Christian 是的,我试过了,但它只提供了包含添加数据的文件。以前的/原始数据会被删除。
  • @Christian 这需要手动更新数据的步骤,但我想使用一些迭代和循环来添加数据。

标签: javascript node.js arrays json list


【解决方案1】:

您可以使用JSON.parse() 将您的 json 文件/字符串解析为 JavaScript 对象。在您的示例中:

let j = JSON.parse('{ "Key1" :[ { "a" : "A1" , "b" : "B1"},{"a" : "A2" , "b" : "B2"}]}');

要为您的对象添加新键,可以使用本机 JavaScript 代码,如果这是您想要的:

j.Key1[0]["New_Key_Array"] = [ { Found: "yes", Correctness: "true" } ];

要转换回 json 格式的字符串,可以使用JSON.stringify() 函数。

【讨论】:

  • 它会覆盖文件数据并仅将输出作为修改后的数据提供。请检查一次好吗?
【解决方案2】:

我正在为您的问题提供代码 sn-p:

let j = JSON.parse('{ "Key1" :[ { "a" : "A1" , "b" : "B1"},{"a" : "A2" , "b" : "B2"}]}');
console.log("JSON at the beginning:\n", j);
j.Key1.forEach((element, index) =>{
  if(element.a === "A1"){
    //Here I have to edit the JSON obj
    j.Key1[index]["New_Key_Array"] = [ { Found: "yes", Correctness: "true" } ];
  }  
}); 
console.log("JSON edited:\n ",j);
let objString =JSON.stringify(j);

【讨论】:

    猜你喜欢
    • 2018-11-19
    • 1970-01-01
    • 2020-03-18
    • 1970-01-01
    • 1970-01-01
    • 2019-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多