Фильтрация вложенных данных ответа API для вывода json - PullRequest
1 голос
/ 03 марта 2020

Конечная точка API на https://api.spacexdata.com/v3/launches/past возвращает данные. Мне нужно отфильтровать эти данные для отображения json на экране, который будет содержать только записи данных API с «DARPA» в поле customers и «2017» в поле launch_year. Флайды customers и payloads являются массивами произвольной длины.

Первая запись данных ответа выглядит следующим образом. Ряд его полей опущен. Пожалуйста, перейдите по ссылке API, чтобы увидеть полный ответ.

0   
  flight_number 1
  mission_name  "FalconSat"
  upcoming  false
  launch_year   "2006"
  launch_date_unix  1143239400
  launch_date_utc   "2006-03-24T22:30:00.000Z"
  launch_date_local "2006-03-25T10:30:00+12:00"
  is_tentative  false
  tentative_max_precision   "hour"
  tbd   false
  launch_window 0
  rocket    
    rocket_id   "falcon1"
    rocket_name "Falcon 1"
    rocket_type "Merlin A"
    first_stage {…}
    second_stage    
      block 1
      payloads  
        0   
          payload_id    "FalconSAT-2"
          norad_id  []
          reused    false
          customers 
            0   "DARPA"

Как я могу go об этом?

Ответы [ 2 ]

1 голос
/ 03 марта 2020

Здесь вы go

fetch('https://api.spacexdata.com/v3/launches/past')
  .then(res => res.json())
  .then(response => {
    const res = response.filter(
      x =>
        x.launch_year === '2007' && x.rocket.second_stage.payloads.some(payload => payload.customers.includes('DARPA'))
    );
    console.log(res);
  });

1 голос
/ 03 марта 2020

Здесь вы go:

<?php
$data = json_decode(file_get_contents('https://api.spacexdata.com/v3/launches/past'), true);
foreach($data as $entry) {
   if($entry['launch_year'] === '2017') {
      if(isset($entry['rocket']['second_stage']['payloads'])) {
         foreach($entry['rocket']['second_stage']['payloads'] as $payload) {
            foreach($payload['customers'] as $customer) {
               if($customer === 'DARPA') print_r($entry);
            }
         }
      }
   }
}

Вам нужно будет добавить некоторую обработку ошибок самостоятельно. Код работает, но в 2017 году клиентов DARPA нет. Если вы проверите 2006 год, он найдет его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...