用xidel列出所有json指针

时间:2016-06-17 12:17:40

标签: json xidel

是否可以使用JSON Pointers或其他命令行工具列出/生成文件中的所有xidel

我已经尝试了

xidel test.json -e '$json()'

但它只列出了顶级字段,而我想要一个递归列表,就像我用xmlstarlet el -a得到的那样。

1 个答案:

答案 0 :(得分:1)

您可以为此声明递归函数:

xidel test.json -e '
      declare function escape ($s) { replace(replace($s, "~", "~0"), "/", "~1") };
      declare function enum($v, $pointer) {
        typeswitch ($v) 
          case array()  return $v() ! enum(., $pointer || "/" || string(position() - 1))
          case object() return $v() ! enum($v(.), $pointer || "/" || escape(.))
          default       return $pointer
      };
      enum($json, "")
'