PHP:如何动态获取未知键名的nativeName中的common字段值?
问题描述
给定某API返回的JSON片段如下:
"name": { "common": "Italy", "official": "Italian Republic", "nativeName": { "ita": { "official": "Repubblica italiana", "common": "Italia" } } }
我们需要动态获取nativeName下对应common字段的值,不管nativeName里的键名(比如示例里的ita)怎么变化,都能拿到对应的本土通用名称。
简洁实现方案
以JavaScript为例,提供几种无需依赖固定键名的写法:
方案一:直接取第一个本土名称的common值
这是最简洁的写法,利用Object.values()把nativeName里的所有值转成数组,直接取第一个元素的common字段(一般每个国家的nativeName下只会有一组本土名称数据):
function getNativeCommonName(nameObj) { return Object.values(nameObj.nativeName)[0]?.common; }
- 补充:
?.是可选链操作符,若nativeName为空或没有common字段,会返回undefined,避免代码报错。
方案二:先获取键名再取值
如果需要明确拿到键名后再取值,可以用这种写法:
function getNativeCommonName(nameObj) { const firstNativeKey = Object.keys(nameObj.nativeName)[0]; return nameObj.nativeName[firstNativeKey]?.common; }
方案三:获取所有本土通用名称(兼容多场景)
如果nativeName下可能存在多组本土名称数据,想要把所有common值都提取出来,可以返回一个数组:
function getAllNativeCommonNames(nameObj) { return Object.values(nameObj.nativeName) .map(nativeItem => nativeItem?.common) .filter(Boolean); // 过滤掉undefined的无效值 }
内容的提问来源于stack exchange,提问作者Uxe
相关产品推荐
相关产品推荐

