JSOnPath(XPath for JSON)解析JSONチュートリアル

2654 ワード

1.紹介


xmlドキュメントでのXPathの位置付けと同様に、JsonPath式は通常、パス取得またはJsonの設定に使用されます.その式は、$などの「dot-notation」および「bracket-notation」の形式を受け入れることができる.store.book[0].title、$[‘store’][‘book’][0][‘title’]
JsonPathは、所与のJSONドキュメントの一部を抽出するための簡単な方法です.JsonPathにはJavascript,Python,PHP,Javaなどのプログラミング言語がたくさんあります.JsonPathが提供するjson解析は非常に強力で、正規表現のような文法を提供し、基本的にあなたが得たいjsonの内容をすべて満たすことができます.
githubには次のようなアプリケーションがあります.https://github.com/json-path/JsonPath  

2.オペレータ


アイコン
説明
$
クエリーのルートノードオブジェクト.jsonデータを表すために使用されます.配列またはオブジェクトです.
@
フィルタブレークスルー(filter predicate)で処理される現在のノードオブジェクト(javaのthisフィールドと同様)
*
ワイルドカード、名前または数値を表すことができます
..
再帰的検索として理解できるAvailable anywhere a name is required.
サブノードを表す
[‘’ (, ‘’)]
1つ以上のサブノードを表す
[ (, )]
1つ以上の配列の下付きを表す
[start:end]
配列フラグメント、区間[start,end)、endを含まない
[?()]
フィルタ式、式の結果はbooleanでなければなりません

3.関数


JsonPath式の実行後に呼び出すことができます.入力値は式の結果です.
 

4.フィルター


フィルタは配列をフィルタするための論理式であり、一般的な式の形は[?(@.age>18)]のように、論理式&&または[?(@.price<10&@.category=‘fiction’)]]のように複数のフィルタ式を組み合わせることができ、文字列は単一引用符または二重引用符で囲まなければならない.例えば[?(@.color=‘blue’)]or[?(@.color="blue")].

 5. 例

{
    "store": {
        "book": [
            {
                "category": "reference",
                "author": "Nigel Rees",
                "title": "Sayings of the Century",
                "price": 8.95
            },
            {
                "category": "fiction",
                "author": "Evelyn Waugh",
                "title": "Sword of Honour",
                "price": 12.99
            },
            {
                "category": "fiction",
                "author": "Herman Melville",
                "title": "Moby Dick",
                "isbn": "0-553-21311-3",
                "price": 8.99
            },
            {
                "category": "fiction",
                "author": "J. R. R. Tolkien",
                "title": "The Lord of the Rings",
                "isbn": "0-395-19395-8",
                "price": 22.99
            }
        ],
        "bicycle": {
            "color": "red",
            "price": 19.95
        }
    },
    "expensive": 10
}

JSOnPathオンライン解析器:http://www.atoolbox.net/Tool.php?Id=792