python -mjson.toolコマンドでフィルタ条件を使用する

python -mjson.toolコマンドでフィルタ条件を使用する

python -mjson.toolコマンドでフィルタ基準を使用して特定のプロパティを持つオブジェクトを選択できますか?

たとえば、2つのオブジェクトを含むexample.jsonファイルがあり、そのうちの2つには「test」:「pi」属性があります。これら2つのオブジェクトを取得するだけです。

ベストアンサー1

情報を正しく抽出するには、入れ子になったデータ構造(JSONなど)を関連ツール(例:json対応)に解析する必要があります。行認識ルーチン(grep/sed/awk/etcなど)のみを使用してネストされたデータ構造を操作しようとすると、失敗と偽の肯定が発生します。たとえば、上記の答えは、JSONがきれいに印刷され、各JSON要素が1行に1つずつある場合にのみ機能します。 JSONが異なる方法で印刷されると(つまり、1行に、または同じ行に複数の要素がある場合)、失敗します。

したがって、Pythonを使用している場合は、オブジェクトを解析してからプログラムで必要なデータを抽出する必要があります(たとえば、Pythonでスクリプトを作成するなど)。

しかし、別の方法があります。 Unixでは、jq、jtc(およびその他の多く)など、ユーザーなどの要件を簡単に実装できる開発されたユーティリティまたはjson認識ユーティリティがあります。以下で解決方法を紹介します。JTC:

次のJSONがあるとします。

bash $ cat file.json 
{
   "Root": [
      {
         "data": "2.71",
         "test": "e"
      },
      {
         "data": "3.14",
         "test": "pi"
      }
   ]
}
bash $ 

次に、含まれているすべてのオブジェクトを抽出するには、次のように"test": "pi"使用します。jtc

bash $ cat file.json | jtc -w'[test]:<pi>: [-1]'
{
   "data": "3.14",
   "test": "pi"
}
bash $ 

walk-path( ) パラメータ-wの説明:

1.[test]:<pi>:同様の要素がすべて検索されます"test": "pi"(複数の場合)。

2.[-1]見つかった要素から JSON レベル 1 つ上に上がります。

散歩結果を印刷します。

ここでjtc完全なユーザーガイドをご覧ください。https://github.com/ldn-softdev/jtc/blob/master/User%20Guide.md

おすすめ記事