gpt4 book ai didi

javascript - JavaScript 中通用 id 引用的 json 解析

转载 作者:行者123 更新时间:2023-12-01 03:33:18 26 4
gpt4 key购买 nike

在我正在开发的项目中,我正在调用一个返回 json 的rest-api,如下所示:

[  
{
"id":0,
"username":"someone0",
"areas":[

],
"role":{
"id":2,
"name":"somerole2",
"users":null
}
},
{
"id":1,
"username":"someone1",
"areas":[

],
"role":{
"id":1,
"name":"somerole1",
"users":null
}
},
{
"id":3,
"username":"someone3",
"areas":[

],
"role":1
}
]

正如您所看到的,用户“someone1”和“someone3”都具有相同的 Angular 色对象,但第二次引用它时(在someone3),它仅由其ID引用。

因为来自此 api 的每个响应都采用这种方式格式化,所以我正在寻找一种通用方法来在纯 JavaScript 中修复此问题(用完整对象替换 id 引用)。

针对看似常见的问题有任何常见的解决方案吗?

PS:我很抱歉这个标题,我不知道正确的术语(欢迎提出建议)。

最佳答案

您可以简单地映射一个函数,对初始值进行这些校正。如果我明白你想要什么,这样的事情应该可行:

response = response.map( function(x){
if( (typeof x.role) == "number" )
x.role = { id : x.role };
return x;
});

但是,这不会为您提供名称和用户字段。如果这很重要,我建议我们迭代一次数据并列出 Angular 色列表,然后返回并填补空白。这看起来像:

roles = {};

response.forEach( function(x){
if( (typeof x.role) != "number" )
roles[x.role.id] = x.role;
});

response = response.map( function(x){
if( (typeof x.role) == "number" )
x.role = roles[x.role];
return x;
});

对数据运行的输出是:

[ 
{ id: 0,
username: 'someone0',
areas: [],
role: { id: 2, name: 'somerole2', users: null }
},
{ id: 1,
username: 'someone1',
areas: [],
role: { id: 1, name: 'somerole1', users: null }
},
{ id: 3,
username: 'someone3',
areas: [],
role: { id: 1, name: 'somerole1', users: null }
}
]

关于javascript - JavaScript 中通用 id 引用的 json 解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44424582/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com