【问题标题】:Update a json key inside a json file using Javascript?使用Javascript更新json文件中的json键?
【发布时间】:2020-09-23 18:37:03
【问题描述】:

我有一个 JSON 文件,我需要读取该 JSON 文件并使用新值更新特定键。我怎样才能在打字稿文件中的 javascript 的帮助下做到这一点?

数据文件.json:

{
   "Id": {
       "place": {
           "operations": [{
               "Name": "John",
               "Address": "USA"
           }]
       }
   }
}

现在在我的 test.ts 文件中

const filepath = 'c:/datafile.json';
var testjson = filepath.Id[place][operations][0];
var mykey = 'Address';

//testjson[mykey] = 'UK';

updateJsonFile(filepath, (data) => {
  data[mykey] = 'UK';
  console.log(data);
  return data;
});

问题在于它使用新的键和值更新 JSON,如下所示:

{
    "Id": {
        "place": {
            "operations": [{
                "Name": "John",
                "Address": "USA"
            }]
        }
        "Address": "UK"
    }
}

但我只想更改特定键的值,然后添加新键。 JS中可以吗?

【问题讨论】:

  • 您确定它是您的代码生成的实际 JSON 吗?该 JSON 无效,在 '"Address": "UK"' 值之前缺少一个 ',',如果它是由代码生成的,则不会发生这种情况。
  • 您不能获取文件的路径(这是一个字符串),然后神奇地从中获取数据。你必须加载它,要么使用require(filepath),要么加载文件并使用JSON.parse()
  • 您的代码中还有其他问题,但在您获取数据并将其解析到内存之前,这些问题并不重要。

标签: javascript node.js json typescript


【解决方案1】:

data 没有Address 属性,它的operations 位于place 内部。

如果您尝试将其设置为

data[mykey] = 'UK';

它将为data创建一个新属性,

应该是

o.Id.place.operations[0][mykey] = 'UK';

jsonString = `
{
   "Id": {
       "place": {
           "operations": [{
               "Name": "John",
               "Address": "USA"
           }]
       }
   }
}
`;

let o = JSON.parse(jsonString);
var mykey = 'Address';

o.Id.place.operations[0][mykey] = 'UK';

console.dir(o);

【讨论】:

  • 嗨,我问如何编辑 JSON 文件而不是 console.log。我只是想知道如何更新 json 文件。顺便说一句,console.dir 是做什么的?
  • StackOverFlow 在浏览器中运行,无法进行文件操作,并且是demo,实际答案是,Use"o.Id.place.operations[0][mykey] = 'UK ';"而不是“data[mykey] = 'UK';”。提供用于访问 JSON 作品的代码。你可以google一下console.dir是做什么的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-04
  • 1970-01-01
  • 1970-01-01
  • 2016-09-29
  • 1970-01-01
相关资源
最近更新 更多