1. ホーム

[解決済み】JSON用のクエリ言語はありますか?

2022-04-02 03:35:35

質問

JSONをクエリするための(おおまかな)SQLやXQueryのような言語はありますか?

私は、JSONにうまくマッピングされた非常に小さなデータセットについて考えています。例えば、 "what are all values of X where Y > 3" といった問い合わせに簡単に答えることや、通常のSUM / COUNTタイプの操作を行うことができればいいなと考えています。

完全にでっち上げの例ですが、こんな感じです。

[{"x": 2, "y": 0}}, {"x": 3, "y": 1}, {"x": 4, "y": 1}]

SUM(X) WHERE Y > 0     (would equate to 7)
LIST(X) WHERE Y > 0    (would equate to [3,4])

これは、クライアントサイドとサーバーサイドの両方で動作し、結果は適切な言語固有のデータ構造に変換される(あるいはJSONとして保持される)と考えています。

ググってみると、それについて考え、いくつかのことを実装している人がいるようです( JAQL しかし、標準的な使い方やライブラリのセットはまだ出てきていないようです。各機能はそれ自体で実装するのはかなり些細なことですが、もし誰かがすでに正しく行っているのであれば、車輪の再発明はしたくありません。

何か提案はありますか?

編集:これは確かに悪い考えかもしれませんし、JSONは私が考えていることに対してあまりにも一般的なフォーマットかもしれません。必要に応じて合計などの関数を直接実行するのではなく、クエリー言語が欲しい理由は、ユーザー入力に基づいてクエリーを動的に構築したいからです。SQLは必要ない、必要な関数を書けばいいんだ」という主張と似ていますね。最終的にそれは手に負えなくなるか、SQLをどんどん押し進めるうちに、自分自身のバージョンを書くことになります。(なるほど、これはちょっとくだらない議論ですが、おわかりですね...)

どのように解決するのか?

もちろん、どうでしょう。

どれもまだ少し未完成のようですが、ある程度は機能しています。また、XMLとJSONでは概念モデルが異なりますが(階層型とオブジェクト/構造型)、概念的にはXPathやXQueryに似ています。

EDIT 2015年9月 実際に今あるのは JSONポインタ この規格は、JSONコンテンツを非常にシンプルかつ効率的にトラバースすることを可能にします。これは正式に規定されているだけでなく、多くのJSONライブラリでサポートされています。表現力が限られているため、それ自体をクエリ言語とみなすことはできないかもしれませんが、私はこれを実際に役立つ標準と呼びたいと思います。