V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Sponsored by
LinkedIn
不坐班的神仙工作 · 去任何你想去的地方远程,赚一线城市的工资
2000 个不用出门 Social 的全球远程工作,帮助 V2EX 的小伙伴开启全新的工作方式。
Promoted by LinkedIn
975779964
V2EX  ›  问与答

有没有 读取 json 文件根据 js 表达式 显示结果的工具

  •  1
     
  •   975779964 · 64 天前 · 423 次点击
    这是一个创建于 64 天前的主题,其中的信息可能已经有所发展或是发生改变。

    需求

    比如我 有一个 test.json 文件 ,

    {
      "code":200,
      "data":[
        {      "name":"name1",      "age":"1"    },
        {      "name":"name2",      "age":"2"    },
        {      "name":"name3",      "age":"3"    }
      ]
    }
    
    

    操作 1 cat test.json | tools .data.map(x=>x.name)

    读到的结果就是

    [
      "name1",
      "name2",
      "name3",
      "name4"
    ]
    
    

    操作 2 cat test.json | tools .data.filter(x=>x.age>1)[0]

    读到的结果就是

    {
      "name": "name2",
      "age": "2"
    }
    
    

    并且在 操作的工程中 点 data, 点 filter ,点 x.age 这些字段 会根据 json 文件 自动补全出来

    我已知的工具

    可以用 js 的语法, 已经和我要的很像了 ,但是 他的 js 的关键字还有 json 的 field 不能补全

    而且 最新版本是拿 golang 重写了 ,竟然把这个 交互模式 的特性去掉了……


    所以想问有没有 满足我这个需求的工具呢?

    4 条回复    2022-07-25 07:38:33 +08:00
    christin
        1
    christin  
       64 天前 via iPhone
    自己用 js 写一个?
    wxf666
        2
    wxf666  
       63 天前
    用过 jq ,语法是有点绕,功能还算凑合。好像是没有交互,自然也没有补全


    $ jq '.data[].name' test.json

    "name1"
    "name2"
    "name3"


    $ jq -r '[.data[].name]' test.json

    [
     "name1",
     "name2",
     "name3"
    ]
    wxf666
        3
    wxf666  
       63 天前   ❤️ 1
    噢,还有个操作二

    $ jq '[.data[] | select(.age | tonumber > 1)][0]' test.json

    {
     "name": "name2",
     "age": "2"
    }
    975779964
        4
    975779964  
    OP
       62 天前
    @wxf666 啊, 这个看着就头疼 ,还得学习 jq 的语法 ,那应该是 没有 这样的工具了 ,我还是先用 fx 吧
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2517 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 44ms · UTC 15:25 · PVG 23:25 · LAX 08:25 · JFK 11:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.