2023年3月11日土曜日

SQLite3で使えるJSON Path

概要

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