使用JavaScript为JSON中每个资源对象添加schemas与id属性
JavaScript 实现给Resources数组元素追加指定属性
你可以通过数组遍历的方式给每个资源对象追加固定属性,以下是可直接运行的实现方案:
完整实现代码
// 若你接收到的是JSON字符串,先通过 JSON.parse(响应字符串) 转为JS对象再处理 const rawResponse = { "Resources": [ { "emails": { "type": "bobsmith01@company.com", "value": "Personal" }, "name": { "familyName": "Bob-update3", "givenName": "Smith" }, "detail": "SUCCESS", "userName": "bobsmith01@company.com", "status": "200" }, { "emails": { "type": "samgomes@company.com", "value": "Personal" }, "name": { "familyName": "gomes", "givenName": "sam" }, "detail": "SUCCESS", "userName": "samgomes@company.com", "status": "200" } ] }; // 抽离固定schemas配置,避免重复编码 const FIXED_SCHEMAS = [ "urn:ietf:params:scim:schemas:core:2.0:User", "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User" ]; // 替换为你实际的id取值逻辑,示例id和预期输出对齐 const resourceIdMap = ["xyz", "abc"]; const processedResponse = { // 保留原始响应的其他顶层字段 ...rawResponse, Resources: rawResponse.Resources.map((item, index) => ({ schemas: FIXED_SCHEMAS, // 按业务实际来源给id赋值,比如id来自原对象的userId字段就写 item.userId id: resourceIdMap[index], // 保留原资源的所有原有属性 ...item })) }; // 若需要转回JSON字符串格式,可调用以下方法,第三个参数是格式化缩进空格数 // const finalResult = JSON.stringify(processedResponse, null, 4);
关键说明
- 上述实现用
map加对象展开运算符处理,不会修改原始响应数据,避免原始数据被意外污染;如果不需要保留原数据,也可以直接用forEach遍历原数组,直接给每个元素追加schemas和id属性,写法更直接。 - 如果业务要求每个资源对象的
schemas数组是独立引用,把schemas: FIXED_SCHEMAS改成schemas: [...FIXED_SCHEMAS]做一次浅拷贝即可。 id的赋值逻辑根据实际业务调整即可,示例里的id列表仅为对齐给出的预期输出。
内容的提问来源于stack exchange,提问作者unknown09
相关产品推荐
相关产品推荐

