node,js使用变量作为键名为json添加外层

时间:2017-07-26 23:16:09

标签: javascript json node.js

我有一个标准JSON存储在变量中,并且能够在直接使用文本但添加变量时添加顶级键,

[{"myKey":"my value"}]

存储在orginalJson中。然后我添加一个顶级键作为文本

var newJson = JSON.parse(orginalJson);
newJson = { myText: newJson };

给出

{ "myText": [{"myKey":"my value"}]}

我现在想用变量

替换代码中的文本
var newVar = "newtext";    
var newJson = JSON.parse(orginalJson);
newJson = { newVar: newJson };

但是我没有按预期获得var值,只是var的名称不是值

期望

{ "newtext": [{"myKey":"my value"}]}

但是

{ "newVar ": [{"myKey":"my value"}]}

在此实例中使用var的正确方法是什么。我已阅读其他帖子建议使用push,但我没有运气了解正确的语法。

2 个答案:

答案 0 :(得分:1)

使用var的正确方法是;

var newVar = "newText"
var newJson = {}
newJson[newVar] = JSON.parse(originalJson)

这会给你

{ "newVar ": [{"myKey":"my value"}]}

答案 1 :(得分:0)

您必须首先创建对象,然后使用括号表示键 因为您使用相同的变量来保存新修改的值,所以我们需要一个临时对象。
更好的选择可能是两次不使用相同的变量



var orginalJson = '{"test":"test"}';

var newVar = "newtext";
var newJson = JSON.parse(orginalJson);
var tempObj = {};

tempObj[newVar] = newJson;

newJson = tempObj;

console.log(newJson)




或者在ES2015中,您可以使用动态键



var orginalJson = '{"test":"test"}';

var newVar = "newtext";
var newJson = JSON.parse(orginalJson);

newJson = { [newVar]: newJson };

console.log(newJson);