首页 > 解决方案 > 从变量生成 json 对象并插入到另一个 json 对象中

问题描述

这个问题纯粹是语法。我正在尝试将生成的 JSON 对象插入到另一个 JSON 对象中。

假设我的 JSON 如下所示:

var database =
{
  "john": {
    "pwd": "somehashrighthere",
    "mail": "example@gmail.com"
  }
}

此对象在用户名下存储哈希和电子邮件。现在我想插入一个新用户:

var name = "somename";
var pwd = "hash";
var mail = "email@email.net";

如果我尝试将其插入到 json 对象中

database.name =
{
    "pwd": pwd,
    "mail": mail
}

我希望有一个填补空白的输出:

{
  "john": {
    "pwd": "r1pper",
    "mail": "example@gmail.com"
  },
  "somenamerighthere": {
    "pwd": "hash",
    "mail": "email@email.net"
  }
}

相反,javascipt 采用了相当字面的表达式:

{
  "john": {
    "pwd": "r1pper",
    "mail": "example@gmail.com"
  },
  "name": {
    "pwd": "pwd",
    "mail": "mail"
  }
}

我对 javascript/json 很陌生,如果你们向我解释如何动态地(!)生成 json 对象并将它们输入到更大的数据结构中,我将不胜感激。我在 SO 上找到的答案都不能以我能理解的方式解决这个问题。我是否需要对数据结构进行更改,或者我只是误解了 javascript/node.js 语法。提前致谢 :)

编辑:我很简单地解决了这个问题。原来javascript实际上将变量传递到json中,我很困惑:

{
  "john": {
    "pwd": "r1pper",
    "mail": "example@gmail.com"
  },
  "name": {
    "pwd": "hash",
    "mail": "email@email.net"
  }
}

现在我们只需要动态传递名称,这可以通过将 JSON 视为数组来解决:

database[name]

视为name变量。

编辑2:

下面的评论是在编辑时出现的。我为此道歉。

标签: javascriptnode.jsjsondatabasedata-structures

解决方案


你应该使用database[name](取值name并用作索引)

而不是database.name(使用字符串'name'作为索引)


推荐阅读