Reputation: 8705
I have this JSON
file called test.json
which says:
{
"test":true,
"limit":
{
"min":0.5,
"max":1.5
}
}
I'd like to be able to read this file in the Windows command line and have these objects parsed as variables.
How would I do this?
Upvotes: 12
Views: 55081
Reputation: 3423
I'd like to be able to read this file in the Windows command line and have these objects parsed as variables.
I'll interpret this as, you want to do:
SET min=0.5
SET max=1.5
I'd recommend the powerful tool xidel
for this task.
Basic command:
xidel -s test.json -e "$json/limit/min" -e "$json/limit/max"
xidel -s test.json -e "$json/limit/(min,max)"
Whether you use 2 queries to return each value, or 1 query to return both values, both commands should return:
0.5
1.5
Export with custom variable-names:
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
Both commands do:
SET min=0.5
SET max=1.5
Export with key-names as variable-names:
FOR /F "delims=" %A IN ('xidel -s test.json -e "$json/(limit)() ! eval(x'{.}:=$json/limit/{.}')[0]" --output-format^=cmd') DO %A
To answer my own question:
FOR /F "delims=" %%i in ('type test.json ^| jq .limit.min') DO SET min=%%i
If that's all you want, then...
FOR /F "delims=" %A IN ('xidel -s test.json -e "$json/limit/min"') DO SET min=%A
or...
FOR /F "delims=" %A IN ('xidel -s test.json -e "min:=$json/limit/min" --output-format^=cmd') DO %A
...is all you need.
Upvotes: 0
Reputation: 41
PowerShell example.
Create from file: $js = Get-Content file.json | ConvertFrom-Json.
Get subkey: $js.key.subkey
Upvotes: 1
Reputation: 12603
If you use Windows Powershell as your command line, you can use the ConvertFrom-JSON
cmdlet: http://powershelljson.codeplex.com/
Make sure your PowerShell version is above 3.0, as ConvertFrom-JSON is available from that version.
If you use plain old CMD, you'll need an external tool for it. I like jq: http://stedolan.github.io/jq/. The tutorial uses curl
for the examples, but you can just as easily use echo
or read the JSON from a file.
Upvotes: 11