我正在向 Github 上名为jsonget的 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"]
。
我想避免在这里使用反射,但我没有看到另一种方法来做到这一点。