python - मनमाने ढंग से नेस्टेड JSON डेटा में एक विशेष क्षेत्र तक पहुँच




list dictionary (2)

आपने JSON डेटा को नेस्टेड किया है ; 'annoucement' कुंजी के साथ जुड़ा स्ट्रिंग स्वयं एक और, पृथक, एम्बेडेड JSON दस्तावेज़ है।

आपको पहले उस स्ट्रिंग को डीकोड करना होगा:

import json

replay_data = raw_replay_data['data']['video_info'][0]
announcement = json.loads(replay_(data['announcement'])
print(announcement['content'])

फिर वहां से परिणामी शब्दकोश को संभालें।

इस सवाल का पहले से ही यहाँ एक जवाब है:

{
  "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.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

तो, संक्षेप में, "उतरो" सीढ़ी है जो "रँग" का उपयोग करके "डेटा" है -

  1. data , एक शब्दकोश
  2. video_info , dicts की सूची
  3. announcement , dicts की सूची के पहले तानाशाही में एक तानाशाह
  4. 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'

यह एक मार्गदर्शक के रूप में उम्मीद करना चाहिए कि आपको इस प्रकृति के भविष्य के प्रश्न करने चाहिए।





dictionary