Я создал ручную петлю, чтобы сформировать json, который используется другим API в проекте, который я запускаю, см. Ниже.PHP loop для создания вручную JSON
Проблема в том, что API не распознает мой выход json. Я проверил результат своей петли, и все выглядит отлично.
Если я копирую и вставляю напрямую мой результат (эхо), он отлично работает, но через мой цикл он не работает. У кого-нибудь есть идеа?
foreach ($array['hits'] as $key => $value) {
$message = $message.'{
"title":"'.$value['Title'].'",
"image_url":"'.$value['image'].'",
"subtitle":"'.substr($value['Detail'],0,120).'",
"buttons":[
{
"type":"web_url",
"url":"'.SITE_ROOT_URL.$value['URL'].'?utm_source=chatbot",
"title":"Leia mais"
}
]
},';
}
$message = '{"messages": [
{
"attachment":{
"type":"template",
"payload":{
"template_type":"generic",
"elements":['.rtrim($message,",").']
}
}
}
]
}';
echo $message;
Выход var_export ($ массив [ 'хиты']) выглядит следующим образом:
array (0 => array ('ID' => '69', 'Title' => 'This is an example', 'URL' => 'example/1', 'Detail' => 'Some description here...', 'image' => 'image1.png', 'objectID' => '75877631')), 1 => array ....
Вы никогда не должны вручную создать JSON, как это. –
Почему вы не хотите использовать 'json_encode()'? – Barmar
@JayBlanchard Я бы не зашел так далеко, как сказал _never_ вручную создать JSON - есть некоторые настоящие случаи, которые его требуют, но это, конечно же, не один из них. т. е. 'json_encode' может [выводить неправильный тип массива в определенных обстоятельствах] (https://eval.in/727141). –