我想将* .json文件中的数据批量添加到file.txt
中。
我的JSON文件config.json
:
"nodes": [
{
"id": "item1",
"host": "${host:item1}",
"apps": [
{
"id": "value1",
"template_id": "value1"
},
{
"id": "value2",
"template_id": "value2",
},
我只想获取节点value1
的{{1}}个元素的值value2
和id
。但是在我的脚本中使用命令apps
的问题实际上是它读取find
和id
的值。
是否可以将值获取到template_id
而不是id
?
我尝试过...仍然无法正常工作...
template_id
然后,我真的不知道如何在文本文件中获取所有这些数据。
答案 0 :(得分:0)
您不应将结构化信息视为纯文本。
例如,以我的片段的Valid JSON (RFC 4627)
版为例:
{
"nodes":[
{
"id":"item1",
"host":"${host:item1}",
"apps":[
{
"id":"value1",
"template_id":"value1"
},
{
"id":"value2",
"template_id":"value2"
}
]
}]
}
并使用PowerShell的cmdlet ConvertFrom-Json
,很容易收到正确的ID值
PoSh> $Json = Get-Content .\config.json | ConvertFrom-Json
PoSh> $JSon.Nodes.Apps.id
value1
value2
使用批处理文件标签将其成批包裹起来成为主题
@Echo off
Powershell -Nop -C "(Get-Content .\config.json|ConvertFrom-Json).Nodes.Apps.id" >file.txt
答案 1 :(得分:0)
您可以尝试使用jsonextractor.bat
。为了拥有有效的json,我使用了以下方法:
{
"nodes": [{
"id": "item1",
"host": "${host:item1}",
"apps": [{
"id": "value1",
"template_id": "value1"
},
{
"id": "value2",
"template_id": "value2"
}
]
}]
}
并获取值:
for /f "tokens=* delims=" %%a in ('jsonextractor.bat test.json "nodes[0].apps[0].id"') do (
set "first_id=%%~a"
)
echo %first_id%
答案 2 :(得分:0)
请使用像Xidel这样的JSON解析器来解析JSON!
CompanyContact
要将输出保存到文件中:
xidel -s config.json -e "$json/(.//apps)()/id" # or in full: $json/(nodes)()/(apps)()/id
value1
value2