有谁知道在下面的示例JSON中可以使用什么json查询过滤器来选择Tigger的食物?JSON是大规模且相对复杂的AWS blob的简化替代.
一些背景:我很高兴发现Ansible有一个json查询过滤器.鉴于我试图从AWS JSON blob中选择一个元素,这看起来就像我需要的那样.但是我很快遇到了麻烦,因为AWS对象有标签,我需要按标签选择项目.我尝试了相当于Foods[Tags[(Key='For') & (Value='Tigger')]]和类似的选择器路径,但没有设法让它工作.使用独立的JSON-查询库如https://www.npmjs.com/package/json-query我可以使用parent属性,但是,这并不似乎是在Ansible,撇开是从核心理念的偏差JSON查询.
回避问题并使用jsonpath选择器可能会更好.jsonpath类似于json-query,是xpath的翻译.
{ "Foods" :
[ { "Id": 456
, "Tags":
[ {"Key":"For", "Value":"Heffalump"}
, {"Key":"Purpose", "Value":"Food"}
]
}
, { "Id": 678
, "Tags":
[ {"Key":"For", "Value":"Tigger"}
, {"Key":"Purpose", "Value":"Food"}
]
}
, { "Id": 911
, "Tags":
[ {"Key":"For", "Value":"Roo"}
, {"Key":"Purpose", "Value":"Food"}
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
非常感谢!
参考文献:
我想用json-query来标记这个问题,但是缺乏这样做的要点.
我试图在环境中传递JSON字符串.
- name: Start {{service_name}}
shell: "<<starting springboot jar>> --server.port={{service_port}}\""
environment:
- SPRING_APPLICATION_JSON: '{"test-host.1":"{{test_host_1}}","test-host.2":"{{test_host_2}}"}'
Run Code Online (Sandbox Code Playgroud)
test_host_1是172.31.00.00
test_host_2是172.31.00.00
但是在spring日志中,我会在打印时获得JSON解析异常
Caused by: com.fasterxml.jackson.core.JsonParseException: Unexpected character (''' (code 39)): was expecting double-quote to start field name
at [Source: {'test-host.1': '172.31.00.00', 'test-host.2': '172.31.00.00'}; line: 1, column: 3]
Run Code Online (Sandbox Code Playgroud)
如图所示,双引号转换为单引号!
我试图逃避双引号但没有运气.
知道为什么会这样,或者任何解决方法吗?
我有一个 python 脚本,它正在返回/打印两个列表。
测试文件
def getHosts():
Pool1=[x.x.x.x, x.x.x.x]
Pool2=[x.x.x.x, x.x.x.x]
Print pool1,pool2
Return pool1,pool2
getHosts()
Run Code Online (Sandbox Code Playgroud)
我的剧本看起来像:
-task:
name: get the hosts
command: /test.py
register: result
Run Code Online (Sandbox Code Playgroud)
现在,是否可以从注册变量 result 中分别取出 pool1 和 pool2 ?如果是,请给我举个例子。
任何帮助或建议将不胜感激。