如何使用Windows命令行将JSON文件解析为变量?

12

我有一个名为test.jsonJSON文件,内容如下:

{
    "test":true,
    "limit": 
    {
        "min":0.5,
        "max":1.5
    }
}

我希望能够在Windows命令行中阅读此文件,并将这些对象解析为变量。

我该怎么做?


@Manish - 你能给我一个例子吗? - Kriem
3个回答

11

1
请查看我的答案的第二部分。 - Idan Arye
我不确定这会如何帮助我创建变量。我有什么遗漏吗? - Kriem
1
我们的声誉核心完全相同,哈哈 :P - Kriem
6
回答自己的问题:FOR /F "delims=" %%i in ('type test.json ^| jq .limit.min') DO SET min=%%i 的意思是从文件test.json中读取JSON格式数据,通过jq工具解析出其中.key为limit的属性对象,并获取该对象下的min属性值并赋值给变量min。 - Kriem
4
请注意,您不需要在此处使用type命令 - 您可以使用文件重定向运算符<,并编写'jq .limit.min ^< test.json' - Idan Arye
显示剩余3条评论

1

PowerShell 示例。 从文件创建:$js = Get-Content file.json | ConvertFrom-Json。 获取子键:$js.key.subkey


1
这应该是最好的答案。对我来说很有效,而且不需要安装任何东西。 - Yuanqiu Li

0
我想要能够在Windows命令行中读取该文件,并将这些对象解析为变量。
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

这就是你所需要的全部。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接