2016-07-29 3 views
-3
{ 
    "Steps": [ 
     { 
      "Status": { 
       "State": "PENDING", 
       "StateChangeReason": {} 
      }, 
      "ActionOnFailure": "CANCEL_AND_WAIT", 
      "Name": "ABCD" 
     }, 
     { 
      "Status": { 
       "State": "COMPLETED", 
       "StateChangeReason": {} 
      }, 
      "ActionOnFailure": "CANCEL_AND_WAIT", 
      "Name": "KLMN" 
     }, 
     { 
      "Status": { 
       "Timeline": { 
        "CreationDateTime": 1469815629.4289999 
       }, 
       "State": "PENDING", 
       "StateChangeReason": {} 
      }, 
      "ActionOnFailure": "TERMINATE_CLUSTER", 
      "Name": "XYZ" 
     } 
    ] 
} 

名前= "KLMN"のステップのステータスが完了しているかどうかをチェックしたいと思います。どのように私はそれをPythonで行うことができます。他のフィールドの値に基づいてPythonのjson入力から情報を抽出する

のpython -c 'インポートJSON、SYS; OBJ = json.load(sys.stdinを); "ステップ"] OBJを印刷....'

方法べきIコード印刷データは、あなたのデータ構造である

[step['Status']['State'] for step in data['Steps'] if step['Name']=='KLMN'] 

:あなたはこれを入力することができます

+1

すでにJSONをPythonオブジェクトにロードするコードがあります。あなたがしなければならないことは、そのリストを反復し、そのリスト内のどの辞書があなたの希望する名前と一致するかを見つけることだけです。 JSONの読み込み部分はすでに解決済みです。これは*ちょうどPythonのリスト付き辞書問題です*。 –

答えて

1

を完了した印刷するステップ。

['COMPLETED'] 

これは1つの要素のリストです。

+0

私はそれを[u'COMPLETED '] – Bharthan

1
steps = { 
    "Steps": [ 
     { 
      "Status": { 
       "State": "PENDING", 
       "StateChangeReason": {} 
      }, 
      "ActionOnFailure": "CANCEL_AND_WAIT", 
      "Name": "ABCD" 
     }, 
     { 
      "Status": { 
       "State": "COMPLETED", 
       "StateChangeReason": {} 
      }, 
      "ActionOnFailure": "CANCEL_AND_WAIT", 
      "Name": "KLMN" 
     }, 
     { 
      "Status": { 
       "Timeline": { 
        "CreationDateTime": 1469815629.4289999 
       }, 
       "State": "PENDING", 
       "StateChangeReason": {} 
      }, 
      "ActionOnFailure": "TERMINATE_CLUSTER", 
      "Name": "XYZ" 
     } 
    ] 
} 

if [step["Status"]["State"] for step in steps['Steps'] if step["Name"] == "KLMN"][0] == 'COMPLETED': 
    #Do something 
関連する問題