我有一个标准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
,但我没有运气了解正确的语法。
答案 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);