Попытка создать динамический массив в указанном ниже формате json

Я пытаюсь создать ответ JSON в этом формате:

{
"id": "",
"goalLink": [{
"iconUrl": "",
"title": ""}]
}

Я объявил переменные как

$id;
$goalLink = [];

Затем в конструкторе я создал

$this->id = 123;
$this->goalLink = [
'iconUrl' => null,
'title' => null
];

теперь, когда я делаю что-то подобное в функции

public function example() {
$client = API::client();
$url = "some url here";
$data = [
'id' => $this->id,
'goalLink' => [
'iconUrl' => $this->goalLink['iconUrl'],
'title' => $this->goalLink['title']
]
];
$client->post($url, ['json' => $data]);

}

но это формат $ data, который example () отправляет в API

{
"id": "",
"goalLink": {
"iconUrl": "",
"title": ""}
}

Я проверил на других форумах, но не смог найти решение. Может кто-нибудь, пожалуйста, помогите мне здесь. Я не уверен, где я иду не так.

2

Решение

Обертывание вашего ассоциативного массива с помощью iconUrl и заголовка внутри индексированного массива обеспечит дополнительную оболочку.

public function example() {
$client = API::client();
$url = "some url here";
$data = [
'id' => $this->id,
'goalLink' => [
[
'iconUrl' => $this->goalLink['iconUrl'],
'title' => $this->goalLink['title']
]
]
];
$client->post($url, ['json' => $data]);
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]