お世話になっております。
LINE Messaging APIからJSONファイルを取得する所まではうまくいきましたが、この複雑な辞書からデータを取り出す所でつまづきました。
Python
1#!/usr/local/bin/python3.7 2import json, os, sys, cgi 3import sqlite3 4 5if os.environ['REQUEST_METHOD'] == 'POST': 6 7 length, _ = cgi.parse_header(os.environ['CONTENT_LENGTH']) 8 data = sys.stdin.buffer.read(int(length)) 9 10 json_str = data.decode("utf-8") 11 json_data = json.loads(json_str) 12 13 destination = json_data["destination"] 14 events = json_data["events"] 15 16### ここでエラーになるようです### 17 event_type = json_data["events"][0]["type"] 18###################### 19 20 print ("Content-type: application/json\n") 21 print ("{}")
Pythonの辞書
1{'destination': '***', 2 'events': 3 [ 4 { 5 'type': 'message', 6 'message': 7 { 8 'type': 'text', 9 'id': '***', 10 'text': 'ようこそ' 11 }, 12 'webhookEventId': '***', 13 'deliveryContext': {'isRedelivery': False}, 14 'timestamp': 1656995173364, 15 'source': 16 { 17 'type': 'user', 18 'userId': '***' 19 }, 20 'replyToken': '***', 21 'mode': 'active' 22 } 23 ] 24}
変数event_typeにはmessageという文字列が入ると考えますが、エラーとなってしまいます。
Pythonの辞書の扱い方の話だと思いますが、どのサイトを参考にしても上記のような書き方であり、エラーが解決しません。
どのように修正すべきか、何卒ご教授下さいませ。
■ 2022/07/06 追記
エラーは、LINE Developer の Messaging API settingsで、Webhook URLをVerifyした時、このような形で出てきます。
上記コードのエラーとなる部分をコメントアウトすると「success」となります。
また、データベースに出力させたJSONデータを直接書いたテスト用コードでは、エラーなく変数に辞書の内容が代入されました。

あなたの回答
tips
プレビュー