动态JSON参考Node.js

时间:2019-03-05 10:02:08

标签: javascript node.js json

我有以下格式的JSON文件“ jFile”:

{
  "Entry1": null,
  "Entry2": "SomeValue"
}

以下格式的某些node.js会正确更新文件:

jFile.Entry1= "SomeText";
fs.writeFileSync( "jFile.json", JSON.stringify(jFile, null, 2), "utf8");

但是,如果我这样做:

var testEnt = 'Entry' + 1;
jFile.testEnt = "SomeText";
fs.writeFileSync( "jFile.json", JSON.stringify(jFile, null, 2), "utf8");

脚本运行无错误,但从不更新'Entry1'。我尝试以几种方式引用它(例如jFile。[testEnt]),但是我得到了各种新的有趣的方式,它们都无法使用。

我的问题是:

  1. 为什么?我了解该脚本不了解 'testEnt'无法正确理解我现在的意思是 引用,而不是字符串,但我不知道该怎么办 关于它。
  2. 如何以这种方式动态引用条目?我想要 使脚本更灵活,但似乎找不到有关的信息 具体如何操作。

4 个答案:

答案 0 :(得分:2)

在您的示例中,您写道:

jFile.[testEnt]

正确的语法是:

jFile[testEnt]

您尝试动态访问和编辑对象属性的方式是正确的,但是存在较小的语法错误。

答案 1 :(得分:1)

要使用var中的键更新对象,您可以执行以下操作:

obj[varKey] = 'what you want';

根据您的需要:

var testEnt = 'Entry' + 1;
jFile[testEnt] = "SomeText";
fs.writeFileSync( "jFile.json", JSON.stringify(jFile, null, 2), "utf8");

答案 2 :(得分:0)

您需要这样做:

const fs = require('fs');
const jFile = require('./jFile.json');

jFile.Entry1= "SomeText";

fs.writeFileSync( "jFile.json", JSON.stringify(jFile, null, 2), "utf8");

const testEnt = 'Entry' + 6;
jFile[testEnt] = "SomeText";
fs.writeFileSync( "jFile.json", JSON.stringify(jFile, null, 2), "utf8");

要点在这里:jFile[testEnt] = "SomeText";

输出:

{
  "Entry1": "SomeText",
  "Entry2": "SomeValue",
  "Entry6": "SomeText"
}

答案 3 :(得分:-1)

尝试此操作可能会对您有所帮助。

var testEnt = 'Entry' + 1;
jFile[testEnt] = "SomeText";
fs.writeFileSync( "jFile.json", JSON.stringify(jFile, null, 2), "utf8");