【发布时间】:2020-11-01 03:55:39
【问题描述】:
我需要设置 displayName 变量,但我不知道如何访问它。对于上下文,我正在制作一个 C# 应用程序来将此变量设置为其他值。 displayName 的父变量因使用此应用程序的用户而异。
为了不泄露我的任何个人信息,我对这些进行了模糊处理。
我想我可能需要遍历 JSON 对象子对象,但我不确定。
【问题讨论】:
我需要设置 displayName 变量,但我不知道如何访问它。对于上下文,我正在制作一个 C# 应用程序来将此变量设置为其他值。 displayName 的父变量因使用此应用程序的用户而异。
为了不泄露我的任何个人信息,我对这些进行了模糊处理。
我想我可能需要遍历 JSON 对象子对象,但我不确定。
【问题讨论】:
嘿,所以你是对的,你将不得不遍历对象并搜索以找到显示名称。
我在下面写了一个小函数,它将递归地遍历对象并搜索displayName。显然,如果您不知道位置或路径名,这很困难,因此您必须有一种非常开放的方式来搜索 JSON 对象。
如果您可以控制请求数据的方式,也许您可以更改格式以使数据结构更加一致,但我真的不知道您从哪里获取数据。
这只是众多方法之一。
const obj = {
authenticationDatabase : {
accessToken: 'Mock',
profiles: {
displayName: 'THIS IS A MOCK USER NAME'
},
properties: [],
username: 'MOCK'
}
}
const obj2 = {
authenticationDatabase : {
accessToken: 'Mock',
profiles: {
deep: {
nested: {
object: {
displayName: 'THIS IS A MOCK USER NAME'
}
}
}
},
properties: [],
username: 'MOCK'
}
}
const findDisplayName = obj => {
if(!obj || typeof(obj) != 'object'){
return false;
}
if(Object.keys(obj).includes("displayName")){
return obj["displayName"]
}
for(const key in obj){
if(findDisplayName(obj[key])){
return findDisplayName(obj[key])
}
}
return false;
}
console.log(findDisplayName(obj))
console.log(findDisplayName(obj2))
【讨论】: