简体   繁体   English

访问和打印嵌套的 JSON object

[英]Accessing and printing nested JSON object

I'm having trouble reaching nested keys in the following object.我无法访问以下 object 中的嵌套键。 I'm trying to print all the "kilometers_per_second" within "relative_velocity" inside "close_approach_data".我正在尝试在“close_approach_data”内的“relative_velocity”中打印所有“kilometers_per_second”。

I get back an error and don't understand what I'm doing wrong.我得到一个错误,不明白我做错了什么。 Thank you in advance先感谢您

const asteroidData = near_earth_objects
        .map((data) => data.close_approach_data[0])
        .map((e) => e.relative_velocity); 

// TypeError: Cannot read property 'relative_velocity' of undefined

or

const asteroidData = near_earth_objects
          .map((data) => data.close_approach_data[0].relative_velocity);

// TypeError: Cannot read property 'relative_velocity' of undefined

JSON object: JSON object:

 "near_earth_objects": [
        {
            "links": {
                "self": "http://www.neowsapp.com/rest/v1/neo/2021277?api_key=24TE7EgNfmXIvdb6vNNZGBWx8s54XbZzCCi2oAdN"
            },
            "id": "2021277",
            "neo_reference_id": "2021277",
            "name": "21277 (1996 TO5)",
            "designation": "21277",
            "nasa_jpl_url": "http://ssd.jpl.nasa.gov/sbdb.cgi?sstr=2021277",
            "absolute_magnitude_h": 16.1,
            "estimated_diameter": {
                "kilometers": {
                    "estimated_diameter_min": 1.6016033798,
                    "estimated_diameter_max": 3.5812940302
                },
                "meters": {
                    "estimated_diameter_min": 1601.6033797856,
                    "estimated_diameter_max": 3581.2940301941
                },
                "miles": {
                    "estimated_diameter_min": 0.9951898937,
                    "estimated_diameter_max": 2.2253122528
                },
                "feet": {
                    "estimated_diameter_min": 5254.6044325359,
                    "estimated_diameter_max": 11749.652706022
                }
            },
            "is_potentially_hazardous_asteroid": false,
            "close_approach_data": [
                {
                    "close_approach_date": "1945-06-07",
                    "close_approach_date_full": "1945-Jun-07 22:35",
                    "epoch_date_close_approach": -775272300000,
                    "relative_velocity": {
                        "kilometers_per_second": "15.5094751879",
                        "kilometers_per_hour": "55834.1106763388",
                        "miles_per_hour": "34693.1450477507"
                    },
                    "miss_distance": {
                        "astronomical": "0.0334232973",
                        "lunar": "13.0016626497",
                        "kilometers": "5000054.084456751",
                        "miles": "3106889.5396991238"
                    },
                    "orbiting_body": "Mars"
                }
            ],
            "is_sentry_object": false
        },

       // Object continues repeating the above structure

Do you need all the values or just the kilometers_per_second values?您需要所有值还是只需要kilometers_per_second值?

 let near_earth_objects = [ { "links": { "self": "http://www.neowsapp.com/rest/v1/neo/2021277?api_key=24TE7EgNfmXIvdb6vNNZGBWx8s54XbZzCCi2oAdN" }, "id": "2021277", "neo_reference_id": "2021277", "name": "21277 (1996 TO5)", "designation": "21277", "nasa_jpl_url": "http://ssd.jpl.nasa.gov/sbdb.cgi?sstr=2021277", "absolute_magnitude_h": 16.1, "estimated_diameter": { "kilometers": { "estimated_diameter_min": 1.6016033798, "estimated_diameter_max": 3.5812940302 }, "meters": { "estimated_diameter_min": 1601.6033797856, "estimated_diameter_max": 3581.2940301941 }, "miles": { "estimated_diameter_min": 0.9951898937, "estimated_diameter_max": 2.2253122528 }, "feet": { "estimated_diameter_min": 5254.6044325359, "estimated_diameter_max": 11749.652706022 } }, "is_potentially_hazardous_asteroid": false, "close_approach_data": [ { "close_approach_date": "1945-06-07", "close_approach_date_full": "1945-Jun-07 22:35", "epoch_date_close_approach": -775272300000, "relative_velocity": { "kilometers_per_second": "15.5094751879", "kilometers_per_hour": "55834.1106763388", "miles_per_hour": "34693.1450477507" }, "miss_distance": { "astronomical": "0.0334232973", "lunar": "13.0016626497", "kilometers": "5000054.084456751", "miles": "3106889.5396991238" }, "orbiting_body": "Mars" } ], "is_sentry_object": false }]; let result = near_earth_objects.flatMap(({close_approach_data }) => close_approach_data.map(({relative_velocity})=> relative_velocity.kilometers_per_second)); console.log(result);

your code is fine, just need to convert raw json "near_earth_objects"你的代码很好,只需要转换原始 json "near_earth_objects"

example例子

const near_earth_objects = JSON.parse(JSON.stringify('YOUR_NEAR_EARTH')).near_earth_objects; 
const asteroidData = near_earth_objects
         .map((data) => data.close_approach_data[0].relative_velocity);

check this one检查这个

 const near_earth_objects_json = { "near_earth_objects": [ { "links": { "self": "http://www.neowsapp.com/rest/v1/neo/2021277?api_key=24TE7EgNfmXIvdb6vNNZGBWx8s54XbZzCCi2oAdN" }, "id": "2021277", "neo_reference_id": "2021277", "name": "21277 (1996 TO5)", "designation": "21277", "nasa_jpl_url": "http://ssd.jpl.nasa.gov/sbdb.cgi?sstr=2021277", "absolute_magnitude_h": 16.1, "estimated_diameter": { "kilometers": { "estimated_diameter_min": 1.6016033798, "estimated_diameter_max": 3.5812940302 }, "meters": { "estimated_diameter_min": 1601.6033797856, "estimated_diameter_max": 3581.2940301941 }, "miles": { "estimated_diameter_min": 0.9951898937, "estimated_diameter_max": 2.2253122528 }, "feet": { "estimated_diameter_min": 5254.6044325359, "estimated_diameter_max": 11749.652706022 } }, "is_potentially_hazardous_asteroid": false, "close_approach_data": [ { "close_approach_date": "1945-06-07", "close_approach_date_full": "1945-Jun-07 22:35", "epoch_date_close_approach": -775272300000, "relative_velocity": { "kilometers_per_second": "15.5094751879", "kilometers_per_hour": "55834.1106763388", "miles_per_hour": "34693.1450477507" }, "miss_distance": { "astronomical": "0.0334232973", "lunar": "13.0016626497", "kilometers": "5000054.084456751", "miles": "3106889.5396991238" }, "orbiting_body": "Mars" } ], "is_sentry_object": false }, { "links": { "self": "http://www.neowsapp.com/rest/v1/neo/2021277?api_key=24TE7EgNfmXIvdb6vNNZGBWx8s54XbZzCCi2oAdN" }, "id": "2021277", "neo_reference_id": "2021277", "name": "21277 (1996 TO5)", "designation": "21277", "nasa_jpl_url": "http://ssd.jpl.nasa.gov/sbdb.cgi?sstr=2021277", "absolute_magnitude_h": 16.1, "estimated_diameter": { "kilometers": { "estimated_diameter_min": 1.6016033798, "estimated_diameter_max": 3.5812940302 }, "meters": { "estimated_diameter_min": 1601.6033797856, "estimated_diameter_max": 3581.2940301941 }, "miles": { "estimated_diameter_min": 0.9951898937, "estimated_diameter_max": 2.2253122528 }, "feet": { "estimated_diameter_min": 5254.6044325359, "estimated_diameter_max": 11749.652706022 } }, "is_potentially_hazardous_asteroid": false, "close_approach_data": [ { "close_approach_date": "1945-06-07", "close_approach_date_full": "1945-Jun-07 22:35", "epoch_date_close_approach": -775272300000, "relative_velocity": { "kilometers_per_second": "15.5094751879", "kilometers_per_hour": "55834.1106763388", "miles_per_hour": "34693.1450477507" }, "miss_distance": { "astronomical": "0.0334232973", "lunar": "13.0016626497", "kilometers": "5000054.084456751", "miles": "3106889.5396991238" }, "orbiting_body": "Mars" } ], "is_sentry_object": false } ] } const near_earth_objects = JSON.parse(JSON.stringify(near_earth_objects_json)).near_earth_objects; const asteroidData = near_earth_objects.map((data) => data.close_approach_data[0].relative_velocity); console.log(asteroidData);

If you want only kilometers_per_second , you can do like如果你只想要kilometers_per_second ,你可以这样做

const asteroidData = near_earth_objects
          .map((data) => data.close_approach_data[0].relative_velocity.kilometers_per_second);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM