json_query过滤器给我无效的文字

时间:2018-01-19 07:53:56

标签: jquery json ansible

我有一个像这样的json文件:

{
        "jcs-wls-2": {
            "componentType": "WLS",
            "creationDate": "2018-01-17T09:26:34.000+0000",
            "hostName": "jcs-wls-2",
            "id": 332687,
            "ipAddress": "144.21.79.147",
            "isAdminNode": false,
            "label": "JCS wls 2",
            "publicIpAddress": "144.21.79.147",
            "role": "MANAGED_SERVER",
            "shapeId": "oc3",
            "state": "READY",
            "totalStorage": 58368,
            "usageType": "MANAGED_SERVER",
            "uuid": "9B2984E9F90F42D588F779B28E339864",
            "vmId": 332687,
            "vmStateDisplayName": "Ready"
        },
        "jcs-wls-1": {
            "componentType": "WLS",
            "creationDate": "2018-01-17T09:26:34.000+0000",
            "hostName": "jcs-wls-1",
            "id": 332686,
            "ipAddress": "144.21.79.161",
            "isAdminNode": true,
            "label": "JCS wls 1",
            "publicIpAddress": "144.21.79.161",
            "role": "ADMIN_SERVER",
            "shapeId": "oc3",
            "state": "READY",
            "totalStorage": 78848,
            "usageType": "ADMIN_SERVER",
            "uuid": "DDE23E2801E24499912D12E552A60EC8",
            "vmId": 332686,
            "vmStateDisplayName": "Ready"
        }
    }

我想迭代到每个条目jcs-wls-1 ... jcs-wls-100如何完成这个云?

当我尝试运行查询以提取jcs-wls-1元素时:

  • set_fact:    servers: "{{ (wls_servers|json_query('[jcs-wls-2]')) }}"

我收到此错误:

  

致命:[localhost]:失败! => {“msg”:“jmespath.search中的错误   json_query过滤器插件:对于基数为10的int()的\ n无效文字:   ' - '“}

我已经尝试了jmesPath教程中的一些示例,但我无法使其工作 如果我删除空格当然这个查询运行 如何“逃避” - char,并迭代我的json fiel? 非常感谢

1 个答案:

答案 0 :(得分:0)

如果您想获得所有服务器的列表,请使用json_query('*')

如果您想获得特定服务器,请使用json_query('jcs-wls-2')

您的原始查询([jcs-wls-2])没有意义,因为您尝试按名称[]而不是整数索引访问索引元素(在列表jcs-wls-2内),因此您将无效int()转化。