我有一个名为JSON
的test.json
文件,它说:
{
"test":true,
"limit":
{
"min":0.5,
"max":1.5
}
}
我希望能够在Windows命令行中读取这个文件,并将这些对象解析为变量。
,我该怎么做?
发布于 2013-10-14 08:36:37
如果使用Windows作为命令行,则可以使用ConvertFrom-JSON
cmdlet:http://powershelljson.codeplex.com/
确保您的PowerShell版本高于3.0,作为ConvertFrom-JSON is available from that version。
如果您使用的是普通的旧CMD,您将需要一个外部工具。我喜欢jq:http://stedolan.github.io/jq/。本教程使用curl
作为示例,但您也可以轻松地使用echo
或从文件中读取JSON。
发布于 2020-05-14 17:04:00
PowerShell例子。从文件创建:$js = Get-Content file.json | ConvertFrom-Json.
Get子键:$js.key.subkey
发布于 2020-06-06 15:18:49
我希望能够在Windows命令行中读取这个文件,并将这些对象解析为变量。
我将把它解释为,你想要做的事:
SET min=0.5
SET max=1.5
我建议使用强大的工具xidel
来完成这项任务。
Basic命令:
xidel -s test.json -e "$json/limit/min" -e "$json/limit/max"
xidel -s test.json -e "$json/limit/(min,max)"
无论使用2个查询返回每个值,还是使用1个查询返回两个值,这两个命令都应该返回:
0.5
1.5
具有自定义变量名的导出:
FOR /F "delims=" %A IN ('xidel -s test.json -e "min:=$json/limit/min" -e "max:=$json/limit/max" --output-format^=cmd') DO %A
FOR /F "delims=" %A IN ('xidel -s test.json -e "$json/limit/(min:=min,max:=max)" --output-format^=cmd') DO %A
这两个命令都可以:
SET min=0.5
SET max=1.5
以密钥名作为变量名的导出:
FOR /F "delims=" %A IN ('xidel -s test.json -e "$json/(limit)() ! eval(x'{.}:=$json/limit/{.}')[0]" --output-format^=cmd') DO %A
回答我自己的问题:
FOR /F "delims=" %%i in ('type test.json ^| jq .limit.min') DO SET min=%%i
如果这就是你想要的那么..。
FOR /F "delims=" %A IN ('xidel -s test.json -e "$json/limit/min"') DO SET min=%A
或者..。
FOR /F "delims=" %A IN ('xidel -s test.json -e "min:=$json/limit/min" --output-format^=cmd') DO %A
...is你所需要的一切。
https://stackoverflow.com/questions/19356220
复制相似问题