2017-11-07 13 views
1

jmespathを使用してJSONドキュメントからキー(instanceId)を取得しようとしています。 JSON文書は次のようになります。値が数値の場合、jmespathを使用してキー/値ペアから値を取得します。

targets = {'instances': 
    [ 
    {'instanceId': u'i-035dd764fe1a08091', 'hostIp': '10.200.10.150'}, 
    {'instanceId': u'i-04ed0d110fef5aef7', 'hostIp': '10.200.10.121'}, 
    {'instanceId': u'i-0f7778162b14c954f', 'hostIp': '10.200.20.135'} 
    ] 
} 

動作するはずです、私はこのように感じる:

jmespath.search('instances[?hostIp=="10.200.10.150"].instanceId', targets)

を、それは空のセットを返します。 IPアドレスを文字列(例えば、文字であればinstanceIdを返します。数値のときに値を検索するためのjmespath構文は何ですか?最終的に、私はhostIpからinstanceIdを取得しようとしています。

答えて

0

何らかの理由でPython実装ではなく'または"

`(バッククォート)テキスト区切り記号を必要とするためにだから、これは空のリストを返します。

In [1]: jp.search('instances[?hostIp=="10.200.10.150"].instanceId', targets) Out[1]: []

しかし、これは何を返します。あなたは探しています:

In [2]: jp.search('instances[?hostIp==`10.200.10.150`].instanceId', targets) Out[2]: ['i-035dd764fe1a08091']

関連する問題