【发布时间】:2017-06-16 05:13:22
【问题描述】:
我创建了一个手动循环来形成一个 json,供我正在启动的项目中的另一个 API 使用,请在下面找到。
问题是 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['hits']) 的输出如下所示:
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()? -
@JayBlanchard 我不会说从不手动创建 JSON - 确实有一些真正的案例需要它,但这肯定不是其中之一他们。即
json_encode可以output the wrong kind of array in certain circumstances。 -
你能发布
$array['hits']的值吗?使用var_export(),以便我们可以将其粘贴到脚本中。 -
FWIW,最初的问题是它在最后添加了一个额外的
,。其他一切都有效,除非例如“标题”包含非法字符。 (即考虑如果你的标题是:"Hello!" - Greetings and you会发生什么。这些引号会导致它生成无效的 JSON。)