2011-08-13 5 views
3

正規表現を使用すると、文字列と一致する形式を指定し、文字列が一致するかどうかを調べ、一致する箇所を見つけて後方参照を取得することができます。正規表現のようなものがありますが、文字列の代わりにJSONをマッチングするものはありますか?

JSONのようなものがあります。考えてみましょう:あなたが好きなものでこれを一致させることができ

{ "title": "My blog entry", 
    "author": { "name": "Joe", "id": 4324132 }, 
    "comments: [ 
    "first!!!", 
    "Very insightful!", 
    "A++ would read again" 
    ] 
} 

{ "title": (title), 
    "author": *, 
    "comments": [ 
    "first!!!", 
    ... 
    ] 
} 

(成功戻り、値"My blog entry"にキャプチャtitleをバインドすることになる)だけの例です

。 APIレスポンスの検証からJSONの情報を抽出することから、JSONを変換する偶数(RE RE置換)まで、すべてに役立ちます。

誰でもこのようなものを見たことがありますか?驚くべきことに、正規表現とJSONを同じコンテキストで検索すると、正規表現でJSONを解析しようとする人にしかつながりません。 Ew。

+1

JSONPath(http://goessner.net/articles/JsonPath/)を使用して必要な処理を行うことはできますが、正規表現エンジンではありません。 – Starkey

+0

JSONを検証/消費するための「外部」ドメイン固有言語(DSL)を探しているようです。私はそれのようなものは見たことがありませんが、あなたがレクシング/解析/ ANTLR /などの経験を持っているか、あるいは勉強したいと思っているなら、自分のDSLを作成することができます。 –

答えて

1

正規表現では正確ではありませんが、これを行うのに役立つツールがいくつかあります。

まず、JSON Schemaを使用できるように、データの検証が必要なようです。

第二に、あなたはJSやPHPである場合は、JSONPathを使用するか、またはあなたはCLIやPythonのためJsonGrepを試みることができる、JSON文字列をデコードしたくないと仮定すると、タイトルを抽出します。 CLIの解析にはjshonもあります。

+0

私は「異種のコードを一緒に敷き詰めて同様の機能を実現できますか? - of * course * JSONを検証してアクセスする方法がありますが、これはWeb上で最も一般的なデータ交換フォーマットの唯一のものです。 jshonのようなものでこれに応答するのは、RegExpsを探している人に、MS Wordに検索と置換の機能があることを伝えて応答するようなものです。 :-) – agnoster

+0

あなたはすでにlibs/toolsについて知っていると仮定しても十分ですが、私はあなたの質問に対する答えがノーです。 – Seldaek

+0

十分に公正です。ハッキングする時間!私は、部分的には、私が車輪を再発明していないことを確認したいと思っていました - 少なくとも、私は車輪の有用な変形を構築していたと思います。 – agnoster

1

json:selectをチェックしてください。JSONのCSSセレクタに似ています。これは、構造化データを処理するための「正規表現」に近いものです。

コマンドラインから再生する場合は、コマンドの1つとして「選択」を表示するunderscore-cliをチェックしてください。

0

jsonmatchは、あなたが探しているものの検証部分を行うライブラリです。これは、上記の受け入れられた答えで参照されるJSONスキーマライブラリよりも少し軽い/軽いです。キャプチャを行うためにそれを拡張したい場合は、プルリクエストを暖かく歓迎します。

関連する問題