ฉันกำลังเรียนรู้การเขียนโค้ดแอปพลิเคชันโดยใช้ SLACK API และ Python 3 มี ออบเจ็กต์ตอบสนอง JSON มีเพียงฉันเท่านั้นที่พบว่าความรู้ของฉันในรายการ/ความเข้าใจในพจนานุกรมยังขาดอย่างรุนแรง ฉันมีช่วงเวลาที่ยากลำบากในการหาวิธีการทำงานของไวยากรณ์เพื่อดึงข้อมูลเฉพาะจากวัตถุ JSON ต่อไปนี้:
"channels": [
{
"id": "C73HHT2TZ",
"name": "general",
"is_channel": true,
"created": 1465530333,
"creator": "V35HUT43C",
"is_archived": false,
"is_general": true,
"has_pins": false,
"is_member": true,
"last_read": "1467334012.000165",
"latest": {
"type": "message",
"user": "USLACKBOT",
"text": "Good bye. See you when you return...",
"ts": "1467334012.000165"
},
"unread_count": 0,
"unread_count_display": 0,
"members": [
"X95HUT43C",
"Ad5RQAAHZ",
"X45SY5VEH"
]
ในวัตถุ JSON ข้างต้น ฉันสามารถดึงข้อมูลดัมพ์ 'Channel' แบบดิบทั้งหมดได้โดยใช้:
response = slack.rtm.start()
listening = response.body['channels']
for i in listening:
print(i)
ฉันได้ลองสิ่งนี้เช่นกัน แต่ก็ไม่มีประโยชน์:
response = slack.rtm.start()
listening = response.body['channels'][0]
for i in listening:
print(i)
แต่นี่ทำให้ฉันได้รับสิ่งต่อไปนี้:
id
is_archived
is_general
purpose
name
is_channel
unread_count
members
has_pins
created
topic
creator
unread_count_display
latest
is_member
last_read code here
ฉันเริ่มอุ่นขึ้นแล้ว แต่น่าเสียดายที่มันดูยุ่งเหยิง และฉันก็ไม่สามารถคิดหาวิธีรับข้อมูลในเส้นทางต่อไปนี้ได้:
'channels': > 'latest': > 'text': > และท้ายที่สุดคือค่าของ 'text'
ฉันจะทำเช่นนี้ได้อย่างไร?
text = response.body['channels'][0]['latest']['text']
JSON จะกลายเป็นรายการที่ซ้อนกัน (อาร์เรย์) และพจนานุกรม (วัตถุ) - person jonrsharpe   schedule 01.07.2016channels
แรกในรายการของคุณและนั่นคือพจนานุกรม การวนซ้ำพจนานุกรมจะให้คีย์ต่างๆ แก่คุณ ซึ่งเป็นสาเหตุว่าทำไมคุณจึงเห็นคีย์เหล่านั้นพิมพ์ออกมาทั้งหมด - person Martijn Pieters   schedule 01.07.2016