V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
fusi
V2EX  ›  问与答

想要找一种清洗 json 数据的工具

  •  
  •   fusi · 3 天前 · 776 次点击

    如题,有这样一个需求: 后端响应了一个数据,但是我只关心里面的某几个字段,这个很好实现,直接使用 jsonPath\jmesPath 即可 但是这些字段有的存在于子数据中,我又想要保留父子级关系的情况下获取部分字段,使用上面的工具就变得比较繁琐,例如:

    {
      "a": 1,
      "b": 2,
      "children1": [
        {
          "a": 2,
          "b": 3,
          "d": 4,
          "children1": [
            {
              "b": 5,
              "e": 6
            }
          ]
        }
      ],
      "children2": [
        {
          "b": 5
        }
      ]
    }
    

    上面的数据中,我只想要 b 的值,同时我只关心 children1 的子集,而不关心其他的 b 值 我需要一个工具,能够标记哪些是目标数据,以及哪些是需要迭代的父数据,例如,我只在最外层的 d 中加一个标识符: "&b": 4 然后在 children1 中加一个标识符: "@children1":[...] 那么这个工具会自动采集最外层的 b 以及对应的 children1 中的 b ,就是说,会遍历整个数据,找到&标记的值,如果还有 @标记的值,则进去继续查找&标记的值,最后输出的格式如下:

    {
      "b": 2,
      "children1": [
        {
          "b": 3,
          "children1": [
            {
              "b": 5,
            }
          ]
        }
      ]
    }
    

    当然也不是一定要标记,如果有 ui 页面能够点选那更是再好不过,只是一个举例 这是一个很小众的需求,但是我还是想要先问一下,万一有人以及做出来这个功能了呢?如果实在没有,再考虑自己写

    7 条回复    2024-12-30 13:38:10 +08:00
    dongsuo
        1
    dongsuo  
       3 天前
    我发给 ChatGPT 之后它帮我写出来了……
    虽然我没有验证它的代码,但是我觉得你可以试试,结果我就不贴在这了,以防违反社区规范
    isSamle
        2
    isSamle  
       3 天前
    听着有点像 Xpath
    kamilic
        3
    kamilic  
       3 天前
    可找 ai ,语义转换他最擅长了
    zizon
        4
    zizon  
       3 天前
    jsonpath 路径打平,正则匹配.
    mumbler
        5
    mumbler  
       3 天前   ❤️ 1
    把你需求给 bolt.new 做一个 H5 工具,2 分钟就做好了,试试看吧
    https://warm-rugelach-33b8eb.netlify.app/
    Maboroshii
        6
    Maboroshii  
       3 天前
    先反序列化,再序列化
    wunonglin
        7
    wunonglin  
       3 天前 via iPhone
    序列化,反序列化,deepkit 即可
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2835 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 15:00 · PVG 23:00 · LAX 07:00 · JFK 10:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.