概要
JSONからデータを抽出する方法の一つにJSON Pathを利用する方法がある。 XMLにおけるXPathのような間隔で使うことが出来て結構便利。
SQLite3 のver 3.38.0からJSON Pathがサポートされているので、かなり使いやすくなった。
ただし、SQLite3でサポートされているJSON Path は少なく、特にフィルタリングが使えないのは残念。
目次
$
「$」はルート要素を取得する。
「$」だけを指定すればJSONドキュメント全体を取得することになる。
json
{
"a": [1,2,3] ,
"b": {
"c": [4,5,6] ,
"d": [7,8,9]
}
}
JSON Path
$
結果
{"a":[1,2,3],"b":{"c":[4,5,6],"d":[7,8,9]}}
.
「.」はキーを指定して子要素を取得する
JSON
{
"a": [1,2,3] ,
"b": {
"c": [4,5,6] ,
"d": [7,8,9]
}
}
JSON Path
$.b.c
結果
[4,5,6]
[]
「[]」は位置を数値を指定して配列要素から値を取得する
JSON
{
"a": [1,2,3] ,
"b": {
"c": [4,5,6] ,
"d": [7,8,9]
}
}
JSON Path
$.b.c[0]
結果
4
#
「#」は配列の直後にマイナスを指定して、最終位置から逆準の位置の値を取得する。
JSON
{
"a": [1,2,3] ,
"b": {
"c": [4,5,6] ,
"d": [7,8,9]
}
}
JSON Path
$.b.d[#-1]
結果
9
参考URL
-
# JSONPath - XPath for JSON
https://goessner.net/articles/JsonPath/ -
the_and_operators
https://www.sqlite.org/json1.html#the_and_operators