如何使用通用名称获取 JSON 中的所有值?
Posted
技术标签:
【中文标题】如何使用通用名称获取 JSON 中的所有值?【英文标题】:how to get all the values inside JSON with a common name? 【发布时间】:2021-10-11 21:00:55 【问题描述】:我需要从 JSON 结构中获取所有 name
值的数组。
我的 JSON 如下所示:
"profile":
"G5j7":
"name": "siddharth",
"age": "17"
,
"Loj9":
"name": "ram",
"age": "20"
,
"Huy8":
"name": "maix"
我可以通过以下方式获得特定的name
值:
var singleName = profile.G5j7.name;
但是,如果不知道 profile
中的所有 ID,我如何获得所有 name
值的数组?我需要存储在一个变量中。
【问题讨论】:
这是我 API 中的客户 ID,所以我想要 每个 ID 的名称 【参考方案1】:你可以这样做:
const names = Object.values(profile).map((profile) => profile.name);
Object.values()
返回值的数组。
然后对于每个配置文件,使用.map()
获取每个name
。
【讨论】:
【参考方案2】:let data =
"profile":
"G5j7": "name": "siddharth", "age": "17" ,
"Loj9": "name": "ram", "age": "20" ,
"Huy8": "name": "maix"
;
for (const [key, value] of Object.entries(data.profile))
console.log(`$value.name`);
【讨论】:
【参考方案3】:您可以使用Object.keys
获取对象中的所有属性键,这样您就可以访问所有配置文件对象键,您可以像下面这样检索每个键的名称
let data =
"profile":
"G5j7":
"name": "siddharth",
"age": "17"
,
"Loj9":
"name": "ram",
"age": "20"
,
"Huy8":
"name": "maix"
;
let profiles_keys = Object.keys(data.profile);
let results = profiles_keys.reduce((accumulator, current)=>
return accumulator.concat(data.profile[current].name)
, []);
console.log(results);
【讨论】:
【参考方案4】:您可以使用Object.getOwnPropertyNames
。此函数从对象中获取字段名称到数组。
let data = "profile": "G5j7": "name": "siddharth", "age": "17" , "Loj9": "name": "ram", "age": "20" , "Huy8": "name": "maix"
let propNames = Object.getOwnPropertyNames(data.profile)
propNames.forEach((propname) => console.log(data.profile[propname].name) )
【讨论】:
【参考方案5】:Object.values(yourObj.profile).map(v => v.name)
Object.values() 返回对象的每个(自己的)道具上的值数组。所以你可以忘记属性名称并迭代它的值
【讨论】:
【参考方案6】:const arrayName = Object.values(profile).map((item) => item.name);
【讨论】:
【参考方案7】: const decodedJsonObject = " "profile": "G5j7": "name": "siddharth", "age": "17" , "Loj9": "name": "ram", "age": "20" , "Huy8": "name": "maix" "
var singleName = profile.G5j7.name;
【讨论】:
不,我想要一个数组中的所有名称而不指定 ID以上是关于如何使用通用名称获取 JSON 中的所有值?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Flutter 中的 JSON 文件中获取所有命令 id?
如何插入 data.json 以使组件与界面中的所有属性(打字稿)发生反应
如何根据 JSON 数据中的 lat 和 long 使地图居中,当单击标记时,会弹出一个弹出窗口并在 vueJS 中显示名称?