Синтаксис массива JSON для запросов HTTP HTTP POST

Я пытаюсь написать скрипт PHP, который будет запрашивать API, к которому у меня есть доступ. Для этого API требуется запрос тела сообщения JSON, одним из критериев которого является

"Analyses": ["Phenotype"]

Обратите внимание, что вокруг второй части этой строки нет двойных кавычек. Когда я пытаюсь передать этот скрипт ниже с помощью Httpful, этот скрипт дает мне результат HTTP 500. Без критериев анализа я получаю правильный ответ (хотя и с ошибкой, запрашивающей информацию анализа) в выводе формата JSON. Я предполагаю, что это как-то связано с форматированием / синтаксисом строки Analyses, и я не уверен, что с этим делать. Если я использую одинарные кавычки, я получаю ошибку 500. Если я оставляю кавычки полностью, это предполагает, что это массив, и выдает мне ошибку объекта "Ссылка на объект не установлена ​​на экземпляр объекта". Я не знаю, как передать этот формат без кавычек.

$response = \Httpful\Request::post($url)
        ->sendsJson()
        ->body('{"apiUserKey":"abcde",
                "apiUserId":"efghi",
                "Species":"9606",
                "Analyses": "["Phenotype"]"
                 }')
        ->send();

Спасибо!

1 ответ

Решение

Вы пример почти прав, но вы включаете один набор двойных кавычек для многих. Вы пытаетесь передать массив строк в поле "Анализ". Сам массив не должен быть в двойных кавычках.

$response = \Httpful\Request::post($url)
    ->sendsJson()
    ->body('{"apiUserKey":"abcde",
            "apiUserId":"efghi",
            "Species":"9606",
            "Analyses": ["Phenotype"]
             }')
    ->send();
Другие вопросы по тегам