【发布时间】:2021-03-03 14:35:59
【问题描述】:
我正在尝试获取 json 文件中某个键的值,但有几个问题需要解决。
-
JSON 的键是动态的 - 我有另一个 JSON,在其中我得到了 JSON 中键的路径。 例如,我有一个包含以下映射的 json 文件:
{ "addressesPath":"personal.addresses" }
这告诉我,我正在寻找的值在另一个键中,称为个人。 JSON 将如下所示:
{
"username": "X1",
"id":"1X",
"type": "patron",
"group": "students",
"personal": {
"lastname": "lname",
"firstname": "fname",
"email": "test@test.test",
"phone": "1-111-111-1111",
"mobilePhone": "(111)111-1111",
"birthDate": "1979-01-23T00:00:00.000+0000",
"addresses":
{
"countryId": "US",
"addressLine1": "1111 Brannon Ford Suite 111",
"city": "Kettering",
"region": "MA",
"postalCode": "11111-1111",
"primaryAddress": true
}
}
}
例如,如果 JSON 是“用户”,我想要得到的是 user.personal.addresses
如何将“user.personal.addresses”翻译成“users.+dynamic”? 我尝试这样做,但它似乎不适用于我从映射 json 文件中提取的任何类型的字符串。
-
我有一个问题,因为我不知道我得到的位置是单个值还是值数组。 例如,JSON 可能如下所示:
{ "用户名": "X1", "id":"1X", “类型”:“赞助人”, “组”:“学生”, “个人的”: { "姓氏": "lname", “名字”:“名字”, "电子邮件": "test@test.test", “电话”:“1-111-111-1111”, "手机": "(111)111-1111", "birthDate": "1979-01-23T00:00:00.000+0000", “地址”:[ { "countryId": "美国", "addressLine1": "1111 布兰农福特套房 111", “城市”:“凯特琳”, “地区”:“MA”, "邮编": "11111-1111", “主要地址”:真 }, { "countryId": "美国", "addressLine1": "1112 布兰农福特套房 112", “城市”:“凯特琳”, “地区”:“IL”, "邮政编码": "11112-1112", “主地址”:假 } ] } }
这意味着我需要确定我要获取的数据的结构,无论它是否是一个数组。 我可以通过检查结果是字符串还是对象来做到这一点吗?我知道 JSON 文件中的数组被读取为节点 js 中的对象。
【问题讨论】:
-
如何从 json 中检索值?你使用 JSON.parse 吗?
-
@RadicalEdward 我使用我构建的函数返回元素,就好像它已被解析一样,是的。它不是一个字符串。我可以使用常规结构获取值,例如“users.personal”。我只是有一个问题,因为我需要的路径是动态的,所以我不能只在代码中写“users.personal”。它可以是“users.personal”,但也可以是“users.info.personal”或“users.personalinfo”。我只能通过从映射 json 文件中获取值来知道路径(映射本身保存为字符串变量)。
-
然后按照简单的事情。
users['user']['personal']['address']将接受[..]中的变量,您也可以传递变量,例如addresspersonal等。下面的答案会有所帮助。 -
@RadicalEdward 有趣。我尝试了 users.[addressMap] 但不断收到错误消息。我会尝试这种方式,看看它是否有效。 Mohammad 还给了我一个函数来解决我必须处理的另一个问题,但现在我想看看这个系统是否有效,因为它可能对未来有用。
-
还要提到addresssMap的错误和值。
标签: node.js arrays json key-value