如何使用通用名称获取 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?

如何识别 JSON 响应中的特定值

如何插入 data.json 以使组件与界面中的所有属性(打字稿)发生反应

如何根据 JSON 数据中的 lat 和 long 使地图居中,当单击标记时,会弹出一个弹出窗口并在 vueJS 中显示名称?

如果名称包含点,如何在 dataTables 列初始化中获取 JSON 对象值?

如果名称包含点,如何获取 JSON 对象值?