我有一个名为test.json
的JSON
文件,内容如下:
{
"test":true,
"limit":
{
"min":0.5,
"max":1.5
}
}
我希望能够在Windows命令行中阅读此文件,并将这些对象解析为变量。
我该怎么做?
我有一个名为test.json
的JSON
文件,内容如下:
{
"test":true,
"limit":
{
"min":0.5,
"max":1.5
}
}
我希望能够在Windows命令行中阅读此文件,并将这些对象解析为变量。
我该怎么做?
如果您使用Windows Powershell作为命令行工具,可以使用ConvertFrom-JSON
cmdlet: http://powershelljson.codeplex.com/
请确保您的PowerShell版本高于3.0,因为从该版本开始可用ConvertFrom-JSON。
如果您使用普通的CMD,则需要一个外部工具。我喜欢jq:http://stedolan.github.io/jq/。教程中使用了curl
作为示例,但您也可以轻松地使用echo
或从文件中读取JSON。
FOR /F "delims=" %%i in ('type test.json ^| jq .limit.min') DO SET min=%%i
的意思是从文件test.json中读取JSON格式数据,通过jq工具解析出其中.key为limit的属性对象,并获取该对象下的min属性值并赋值给变量min。 - Kriemtype
命令 - 您可以使用文件重定向运算符<
,并编写'jq .limit.min ^< test.json'
。 - Idan AryePowerShell 示例。
从文件创建:$js = Get-Content file.json | ConvertFrom-Json。
获取子键:$js.key.subkey
SET min=0.5
SET max=1.5
xidel
来完成这个任务。
基本命令:
xidel -s test.json -e "$json/limit/min" -e "$json/limit/max"
xidel -s test.json -e "$json/limit/(min,max)"
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
这就是你所需要的全部。