使用json查询ansible从json中提取多个值

时间:2018-01-14 23:54:48

标签: json parsing ansible json-query

我有一个像:

这样的文件
{
        "account": "/system1/test", 
        "description": "", 
        "desired_state": "active", 
        "id": "f957e20c-0033-4523-9020-e31304401149",
        "status": "active", 
        "tags": [], 
        "time_audited": "2018-01-14T23:12:22Z", 
        "time_created": "2018-01-14T22:34:53Z", 
        "time_updated": null
}

当我尝试获取值时:

with_items: "{{orch_details.content|from_json|json_query('status')}}"

一切都很好。

我想提取其他几个值,但我无法将它们与json_query结合起来,如:

with_items: "{{orch_details.content|from_json|json_query('status, account, description')}}"

我的语法有什么问题?

1 个答案:

答案 0 :(得分:2)

我认为评论试图指出json_query使用JMESPath作为过滤器。你可以在http://jmespath.org/tutorial.html上阅读一下。

在您的示例中,您可以执行以下操作来获取值的数组:

with_items: "{{orch_details.content|from_json|json_query('[status, account, description]')}}"

哪会回来:

[
  "active",
  "/system1/test",
  ""
]

或者如果你想要一个新的哈希:

with_items: "{{orch_details.content|from_json|json_query('{"status": status, "account": account, "desc": description]')}}"

哪会回来:

{
  "status": "active",
  "account": "/system1/test",
  "desc": ""
}