Как отправить массив массивов в JSON с помощью JSON .stringify при отсутствии ключа - PullRequest
0 голосов
/ 19 июня 2020

Это своего рода основной c вопрос для части из вас, но я менее знаком с JSON payload spe c. Я пытался выполнить пример, который я нашел со следующим curl:

curl -i --header "Content-Type: application / json" --request POST --data '[[5.1, 3.5, 1.4, 0.2]] 'http://localhost: 5000 / прогноз

Операция работает хорошо, хотя я не понял, что это за полезная нагрузка json: [[5.1 , 3.5, 1.4, 0.2]]

Я знаком со значением ключа сопоставления при обработке полезной нагрузки JSON, так какой же ключ здесь передается? и почему эта полезная нагрузка не окружена '{}'

Я спрашиваю, так как я хочу использовать эту полезную нагрузку для создания сценария js, который отправит эту полезную нагрузку с использованием JSON .stringify, но я не могу понять, как правильно передать указанную полезную нагрузку:

  var payload = JSON.stringify({
     [[5.1, 3.5, 1.4, 0.2]]
  });

Заранее спасибо

1 Ответ

2 голосов
/ 19 июня 2020

Ваша полезная нагрузка представляет собой (двумерный) массив, который не является объектом, следовательно, без ключа, но является допустимым ресурсом JSON. Таким образом, вы можете опубликовать его как есть в API, при условии, что вы напишете правильный синтаксис:

 var payload = JSON.stringify(    // { <= remove the enclosing braces here as it's not an object
     [[5.1, 3.5, 1.4, 0.2]]
  );

Лучше всего сделать вашу полезную нагрузку более надежной (если вы также обрабатываете серверный API), чтобы встроить массив в объект-оболочка (с преимуществом совместимости с некоторыми API-интерфейсами, у которых есть проблемы с массивом верхнего уровня JSON, и возможностью добавления дополнительных параметров или метаданных к вашей полезной нагрузке).

 var payload = JSON.stringify( 
    {
       data: [[5.1, 3.5, 1.4, 0.2]],
       options: { }
    }
 );
...