मैं एक जेसन प्रतिक्रिया को पार्स करने का प्रयास कर रहा हूं जो इस तरह दिखता है:

{
"links": {
    "next": "http://www.neowsapp.com/rest/v1/feed?start_date=2015-09-08&end_date=2015-09-09&detailed=false&api_key=xxx",
    "prev": "http://www.neowsapp.com/rest/v1/feed?start_date=2015-09-06&end_date=2015-09-07&detailed=false&api_key=xxx",
    "self": "http://www.neowsapp.com/rest/v1/feed?start_date=2015-09-07&end_date=2015-09-08&detailed=false&api_key=xxx"
},
"element_count": 22,
"near_earth_objects": {
    "2015-09-08": [
        {
            "links": {
                "self": "http://www.neowsapp.com/rest/v1/neo/3726710?api_key=xxx"
            },
            "id": "3726710",
            "neo_reference_id": "3726710",
            "name": "(2015 RC)",
            "nasa_jpl_url": "http://ssd.jpl.nasa.gov/sbdb.cgi?sstr=3726710",
            "absolute_magnitude_h": 24.3,
            "estimated_diameter": {
                "kilometers": {
                    "estimated_diameter_min": 0.0366906138,
                    "estimated_diameter_max": 0.0820427065
                },
                "meters": {
                    "estimated_diameter_min": 36.6906137531,
                    "estimated_diameter_max": 82.0427064882
                },
                "miles": {
                    "estimated_diameter_min": 0.0227984834,
                    "estimated_diameter_max": 0.0509789586
                },
                "feet": {
                    "estimated_diameter_min": 120.3760332259,
                    "estimated_diameter_max": 269.1689931548
                }
            },
            "is_potentially_hazardous_asteroid": false,
            "close_approach_data": [
                {
                    "close_approach_date": "2015-09-08",
                    "close_approach_date_full": "2015-Sep-08 09:45",
                    "epoch_date_close_approach": 1441705500000,
                    "relative_velocity": {
                        "kilometers_per_second": "19.4850295284",
                        "kilometers_per_hour": "70146.106302123",
                        "miles_per_hour": "43586.0625520053"
                    },
                    "miss_distance": {
                        "astronomical": "0.0269230459",
                        "lunar": "10.4730648551",
                        "kilometers": "4027630.320552233",
                        "miles": "2502653.4316094954"
                    },
                    "orbiting_body": "Earth"
                }
            ],
            "is_sentry_object": false
        },

}

मैं यह पता लगाने की कोशिश कर रहा हूं कि "miss_distance" शब्दकोश मान प्राप्त करने के लिए कैसे पार्स किया जाए? मैं इसके चारों ओर अपना सिर लपेटने में असमर्थ हूं।

यहाँ मैं अब तक क्या कर पाया हूँ:

  1. अनुरोध से प्रतिक्रिया वस्तु प्राप्त करने के बाद। प्राप्त करें () प्रतिक्रिया = अनुरोध। प्राप्त करें (url

  2. मैं प्रतिक्रिया वस्तु को जेसन ऑब्जेक्ट में परिवर्तित करता हूं डेटा = response.json () # यह डिक्शनरी ऑब्जेक्ट देता है

  3. मैं शब्दकोश के पहले स्तर को पार्स करने का प्रयास करता हूं: मैं डेटा में के लिए: अगर मैं == "नियर_अर्थ_ऑब्जेक्ट्स": डेटासेट 1 = डेटा ["नियर_अर्थ_ऑब्जेक्ट्स"] ["2015-09-08"] # यह अगली वस्तु लौटाता है जो कि प्रकार की सूची है

कृपया कोई मुझे समझा सकता है: 1. इस प्रतिक्रिया को पहली जगह में कैसे समझें। 2. मैं रिस्पांस ऑब्जेक्ट को पार्स करने में कैसे आगे बढ़ सकता हूं और मिस_डिस्टेंस डिक्शनरी तक पहुंच सकता हूं?

कृपया किसी भी संकेत/सहायता की सराहना की जाती है।

शुक्रिया

0
user1462617 6 जुलाई 2019, 00:50

2 जवाब

सबसे बढ़िया उत्तर

आपके डेटा में प्रत्येक तिथि के लिए, पृथ्वी वस्तु के पास, और नज़दीकी दृष्टिकोण के लिए कई शब्दकोश होंगे:

near_earth_objects = data['near_earth_objects']
for date in near_earth_objects:
    objects = near_earth_objects[date]
    for object in objects:
        close_approach_data = object['close_approach_data']
        for close_approach in close_approach_data:
            print(close_approach['miss_distance'])
1
Peter Wood 6 जुलाई 2019, 01:05

नीचे दिया गया कोड आपको प्रत्येक तिथि के लिए प्रत्येक वस्तु के लिए date, miss_distances की एक तालिका देता है

import json
raw_json = '''
{
    "near_earth_objects": {
        "2015-09-08": [
            {
                "close_approach_data": [
                    {
                        "miss_distance": {
                            "astronomical": "0.0269230459",
                            "lunar": "10.4730648551",
                            "kilometers": "4027630.320552233",
                            "miles": "2502653.4316094954"
                        },
                        "orbiting_body": "Earth"
                    }
                ]
            }
        ]
    }
}
'''

if __name__ == "__main__":
    parsed = json.loads(raw_json)

    # assuming this json includes more than one near_earch_object spread across dates
    near_objects = []
    for date, near_objs in parsed['near_earth_objects'].items():
        for obj in near_objs:
            for appr in obj['close_approach_data']:
                o = {
                    'date': date,
                    'miss_distances': appr['miss_distance']
                }
                near_objects.append(o)
    print(near_objects)

आउटपुट:

[
  {'date': '2015-09-08', 
   'miss_distances': {
     'astronomical': '0.0269230459', 
     'lunar': '10.4730648551', 
     'kilometers': '4027630.320552233', 
     'miles': '2502653.4316094954'
    }
  }
]
0
abdusco 6 जुलाई 2019, 01:13