首页 > web前端 > js教程 > 正文

从 JSON 中移除 "$id" 和 "$values" 属性

心靈之曲
发布: 2025-09-27 19:23:00
原创
152人浏览过

从 json 中移除

本文将介绍如何从 JSON 数据中移除特定的属性,例如 $id 和 $values,从而获得更清晰的数据结构。这在处理由后端序列化的数据时非常有用,特别是当这些属性对于前端展示或进一步处理没有实际意义时。

解决方案:递归清理 JSON 属性

核心思路是编写一个递归函数,遍历 JSON 对象的每一个属性,判断属性名是否为需要移除的属性(例如 $id),并进行相应的处理。如果属性值是对象或数组,则递归调用该函数进行进一步处理。

以下是 JavaScript 实现的 sanitizeJson 函数:

function sanitizeJson(obj) {
  // 对象是数组?递归处理每个元素
  if (Array.isArray(obj)) {
    return obj.map(sanitizeJson);
  }
  // 对象是非 null 对象
  else if (typeof obj === 'object' && obj !== null) {
    // 同时存在 '$id' 和 '$values' 属性?处理 '$values' 属性
    if (obj.hasOwnProperty('$id') && obj.hasOwnProperty('$values')) {
      return sanitizeJson(obj['$values']);
    }
    // 从 '$id' 属性创建一个新对象,并处理剩余的属性
    return Object.fromEntries(
      Object.entries(obj)
        .filter(([key]) => key !== '$id')
        .map(([key, value]) => [key, sanitizeJson(value)])
    );
  }
  return obj;
}
登录后复制

代码解释:

Hugging Face
Hugging Face

Hugging Face AI开源社区

Hugging Face 135
查看详情 Hugging Face
  1. 数组处理: 如果输入 obj 是一个数组,则使用 map 方法对数组中的每个元素递归调用 sanitizeJson 函数。
  2. 对象处理: 如果 obj 是一个非 null 对象,则进行以下处理:
    • $id 和 $values 同时存在: 如果对象同时拥有 $id 和 $values 属性,说明该对象是需要被简化的结构,直接递归处理 $values 属性的值,并将其返回。
    • 其他对象: 使用 Object.entries 方法将对象转换为键值对数组,然后使用 filter 方法过滤掉 $id 属性,再使用 map 方法对剩余的键值对递归调用 sanitizeJson 函数,最后使用 Object.fromEntries 方法将键值对数组转换回对象。
  3. 其他类型: 如果 obj 不是数组或对象,则直接返回该值。

使用示例:

const json = '{"$id":"1","$values":[{"$id":"2","prop1":"result","prop2":"result","prop3":{"$id":"3","$values":[{"$id":"4","prop1":"result","prop2":null},{"$id":"4","prop1":"result","prop2":null}]}}]}';
const jsonObject = JSON.parse(json);
const result = JSON.stringify(sanitizeJson(jsonObject), null, '\t');

console.log(result);
登录后复制

输出结果:

[
    {
        "prop1": "result",
        "prop2": "result",
        "prop3": [
            {
                "prop1": "result",
                "prop2": null
            },
            {
                "prop1": "result",
                "prop2": null
            }
        ]
    }
]
登录后复制

注意事项:

  • 该函数会修改原始 JSON 对象的结构。如果需要保留原始数据,请先进行深拷贝。
  • 该函数只移除了 $id 属性。如果需要移除其他属性,可以在 filter 方法中添加相应的判断条件。
  • 此方法假设 $id 和 $values 总是成对出现,并且 $values 包含实际需要的数据。如果情况不同,需要调整代码逻辑。

总结:

通过使用 sanitizeJson 函数,可以有效地从 JSON 数据中移除 $id 和 $values 属性,从而获得更清晰、简洁的数据结构。这种方法适用于处理由后端序列化,并包含冗余属性的 JSON 数据,方便前端展示和进一步处理。根据实际需求,可以灵活修改该函数,以移除其他不需要的属性。

以上就是从 JSON 中移除 "$id" 和 "$values" 属性的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号