2017-07-22 7 views
0

私はPythonが新しく、URLを受け取っているJSONオブジェクトを解析するのに苦労しています。次のエラーが表示されます。 -JSONオブジェクトを解析する - 最初の2つの要素をスキップする

TypeError: 'bool' object is not subscriptable 

これは構文とJSONファイルに不慣れなことです。誰かが正しい方向に私を指差してくれますか?私は"Last"という名前の要素が必要です。私は最初の2つの要素を通過する必要があることを知っているが、私は運がない。私は、これはあなたがJSONをパースする場合は、辞書を得る:)

import json 
bstr = """{ 
    "success": true, 
    "message": "", 
    "result": [ 
     { 
      "MarketName": "USDT-BTC", 
      "High": 2900, 
      "Low": 2600.948, 
      "Volume": 3938.44761207, 
      "Last": 2785, 
      "BaseVolume": 10845860.23439689, 
      "TimeStamp": "2017-07-22T14:22:07.03", 
      "Bid": 2785, 
      "Ask": 2790.10954, 
      "OpenBuyOrders": 3039, 
      "OpenSellOrders": 610, 
      "PrevDay": 2756.711, 
      "Created": "2015-12-11T06:31:40.633" 
     } 
    ] 
}""" 
b = json.loads(bstr) 
print(b["success"]["message"]["result"]["Last"]) 
+0

出力はどのようにする必要がありますか? –

+1

'b ['result'] [0] ['Last']'それはそれです。 –

+0

なぜあなたは 'success'と' message'を全く添え字にしようとしていますか? –

答えて

1

Note: you made some errors with cases ("Sessage" vs "success"). Note that strings are case-sensitive.

を修正するために誰か1秒かかります実現します。辞書の要素(b["success"]など)を取得した場合、("success"など)に関連付けられた値が取得されます。

JSONでは、"Success"はブール値:trueに関連付けられています。 は、ブール値b["success"]["message"]など)の要素を取得できません。

print(b["success"],b["message"],b["result"][0]["Last"]) 

出力します:

>>> print(b["success"],b["message"],b["result"][0]["Last"]) 
True 2785 

我々はb["result"][0]["Last"]を使用することができた理由を

あなたはおそらくやりたいことはJSONの印刷複数の部分では、インスタンスのために書き込むことによってこれを行うことができます"result"に関連付けられた値がリストであるためです。我々は[0]を使用してそのリストの最初の要素を取得し、その要素はもう1つの辞書です。したがって、そのサブ辞書内の"Last"を検索します。

+0

ありがとう - これははるかに明確になります。とても有難い! – TokyoMike

関連する問題