jsongetと呼ばれるGithubのGoプロジェクトに「配列ワイルドカード」を追加する作業を行っています。配列ワイルドカードの意味の例を次に示します。
> echo "[{product:'coffee', price:2.10}, {product:'beer', price:3.80}]" | jsonget '*.price'
[2.10, 3.80]
私のブランチのコードはここにあります
私が直面している問題は、文字にGetValue
遭遇すると、部分式*
を呼び出して再帰GetValue
しますが、型は常に文字列として返されます。
たとえば、テスト ファイルでは、次の json を指定します。
{
"inventory": [
{"name": "mountain bike", "price": 251.0},
{"name": "red wagon", "price": 90.10},
{"name": "kinesis advantage", "price": 300.0},
{"name": "a ticket to Mars", "price": 1200000000.0}
]
}
inventory[*].price
次に、 を期待してクエリを実行します[251,90.1,300,1.2e+09]
が、代わりに を取得し["251","90.1","300","1.2e+09"]
ます。
ここでリフレクションを使用したくないのですが、これを行う別の方法がわかりません。