2016-06-17 3 views
1

JSON Pointersをすべてxidelまたは別のコマンドラインツールを使用してファイルからリスト/生成することはできますか?xsonのすべてのjsonポインタをリストする

私は

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

で試してみたが、私は、私はxmlstarlet el -aと得るもののような再帰的なリストが欲しいながら、それだけで、トップレベルのフィールドを示します。

答えて

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, "") 
' 
+0

うわー、Xidelがいかに強力かつ多彩ないつもびっくり。あなたが書いたボットはまだ自分のレベルを上回っています。私はreddit-chat-botをあなたのxidel-githubにも見つけましたが、その内容のほとんどは私には馴染みのない領域でした。 – MatrixView

+0

私はより簡単な解決策を望んでいましたが、機能します。また、[このような問題のあるjsonファイル](https://www.sitepoint.com/google-maps-json-file/)でエラーがスローされます。 – eadmaster

関連する問題