python2.7を使用していて、解析する必要のあるJSON文字列を動的に受け取っています。python JSONで単一または複数の子があるかどうかを確認する
あなたは[データ] [プレゼンス]は単に1つのオブジェクトまたは複数のオブジェクトのいずれかを有することができる例のデータからわかるように、「
{ u'queueId': u'channel.presence' u'name': u'presence.message' u'timestamp': 1467756404358 u'webhookId': u'U3P3Xw' u'serial': u'e7da73f968767379:37' u'data': {
u'channelId': u'private-cc-259970d91ab44af38393130e95de7057' u'site': u'eu-central-1-A' u'presence': {
u'action': u'enter' u'connectionId': u'LA84hfOd_w' u'data': u'a012a914cce6096c4a02a29da51dbc58' u'clientId': u'a012a914cce6096c4a02a29da51dbc58' } } }, { u'queueId': u'channel.presence' u'name': u'presence.message' u'timestamp': 1467756452665 u'webhookId': u'U3P3Xw' u'serial': u'e7da73f968767379:40' u'data': {
u'channelId': u'private-a012a914cce6096c4a02a29da51dbc58' u'site': u'eu-central-1-A' u'presence': [ { u'timestamp': 1467756404550 u'connectionId': u'LA84hfOd_w' u'clientId': u'a012a914cce6096c4a02a29da51dbc58' u'action': 3 u'data': u'a012a914cce6096c4a02a29da51dbc58' u'id': u'LA84hfOd_w-2:0' } ] } },
を次のように結果のdictが見えます。
そのための私のテストでは、例外を除いて全く失敗:
Error: list indices must be integers, not str
私のコード: for ji in json_data['items']: channel_id = ji['data']['channelId'] logger.debug("ChannelID: %s" % channel_id) found_special_case = False if len(ji['data']['presence']) > 1 : for ch in ji['data']['presence']: ...
不幸にも、チェック項目が1つしかない場合は、len(ji['data']['presence']) > 1
が該当します。その場合、ch
は子アイテムの代わりに「アクション」になります。
辞書に1つまたは複数の項目があるかどうかを確認するにはどうすればよいですか?
は商品がリストされているかどうかを判断するためにisinstance()
を使用することができます
何:私が正しくあなたを理解すれば、これはあなたが探しているロジック
けれどもありますあなたが投稿されたが有効ではない、あなたは有用なサンプルを投稿できますか? –