python - मनमाने ढंग से नेस्टेड JSON डेटा में एक विशेष क्षेत्र तक पहुँच
list dictionary (2)
इस सवाल का पहले से ही यहाँ एक जवाब है:
{
"status": "200",
"msg": "",
"data": {
"time": "1515580011",
"video_info": [
{
"announcement": "{\"announcement_id\":\"6\",\"name\":\"INS\\u8d26\\u53f7\",\"icon\":\"http:\\\/\\\/liveme.cms.ksmobile.net\\\/live\\\/announcement\\\/2017-08-18_19:44:54\\\/ins.png\",\"icon_new\":\"http:\\\/\\\/liveme.cms.ksmobile.net\\\/live\\\/announcement\\\/2017-10-20_22:24:38\\\/4.png\",\"videoid\":\"15154610218328614178\",\"content\":\"FOLLOW ME PLEASE\",\"x_coordinate\":\"0.22\",\"y_coordinate\":\"0.23\"}",
"announcement_shop": "",
मैं इस json से "FOLLOW ME PLEASE" कंटेंट को कैसे हड़प सकता हूँ?
replay_data = raw_replay_data['data']['video_info'][0]
announcement = replay_data['announcement']
यह सब कुछ हड़प लेता है
['announcement']
और मैं नहीं कर सकता
['announcement']['content']
everything
['announcement']['content']
।
ऐसा करने का सही तरीका क्या है?
मुझे यह पता लगाने में मदद करने के लिए अग्रिम धन्यवाद।
आपने
JSON डेटा
को
नेस्टेड किया है
;
'annoucement'
कुंजी के साथ जुड़ा स्ट्रिंग स्वयं एक और, पृथक, एम्बेडेड JSON दस्तावेज़ है।
आपको पहले उस स्ट्रिंग को डीकोड करना होगा:
import json
replay_data = raw_replay_data['data']['video_info'][0]
announcement = json.loads(replay_(data['announcement'])
print(announcement['content'])
फिर वहां से परिणामी शब्दकोश को संभालें।
एक पंक्ति में -
>>> json.loads(data['data']['video_info'][0]['announcement'])['content']
'FOLLOW ME PLEASE'
आपको यह समझने में मदद करने के लिए कि डेटा का उपयोग कैसे करें (इसलिए आपको फिर से पूछने की ज़रूरत नहीं है), आपको अपने डेटा को घूरना होगा।
सबसे पहले, चलो अपना डेटा अच्छी तरह से बाहर करते हैं।
आप या तो
json.dumps(data, indent=4)
उपयोग कर सकते हैं, या आप
JSONLint.com
जैसे ऑनलाइन टूल का उपयोग कर सकते हैं।
{
'data': {
'time': '1515580011',
'video_info': [{
'announcement': ( # ***
"""{
"announcement_id": "6",
"name": "INS\\u8d26\\u53f7",
"icon": "http:\\\\/\\\\/liveme.cms.ksmobile.net\\\\/live\\\\/announcement\\\\/2017-08-18_19:44:54\\\\/ins.png",
"icon_new": "http:\\\\/\\\\/liveme.cms.ksmobile.net\\\\/live\\\\/announcement\\\\/2017-10-20_22:24:38\\\\/4.png",
"videoid": "15154610218328614178",
"content": "FOLLOW ME PLEASE",
"x_coordinate": "0.22",
"y_coordinate": "0.23"
}"""),
'announcement_shop': ''
}]
},
'msg': '',
'status': '200'
}
*** ध्यान दें कि
announcement
कुंजी में डेटा वास्तव में
अधिक
json डेटा है, जिसे मैंने अलग-अलग लाइनों पर रखा है।
सबसे पहले, पता करें कि आपका डेटा कहाँ रहता है।
आप
content
कुंजी में डेटा की तलाश कर रहे हैं, जो कि
announcement
कुंजी द्वारा एक्सेस किया जाता है, जो कि
video_info
की एक सूची के अंदर एक शब्दकोश का हिस्सा है, जिसे
video_info
कुंजी द्वारा एक्सेस किया जा सकता है, जो
data
द्वारा एक्सेस किया
data
।
तो, संक्षेप में, "उतरो" सीढ़ी है जो "रँग" का उपयोग करके "डेटा" है -
-
data
, एक शब्दकोश -
video_info
, dicts की सूची -
announcement
, dicts की सूची के पहले तानाशाही में एक तानाशाह -
json डेटा के भाग के रूप में रहने वाली
content
।
प्रथम,
i = data['data']
आगामी,
j = i['video_info']
आगामी,
k = j[0] # since this is a list
यदि आप केवल पहला तत्व चाहते हैं, तो यह पर्याप्त है। अन्यथा, आपको पुनरावृति की आवश्यकता होगी:
for k in j:
...
आगामी,
l = k['announcement']
अब,
l
JSON डेटा है।
इसे लोड करें -
import json
m = json.loads(l)
अंततः,
content = m['content']
print(content)
'FOLLOW ME PLEASE'
यह एक मार्गदर्शक के रूप में उम्मीद करना चाहिए कि आपको इस प्रकृति के भविष्य के प्रश्न करने चाहिए।