PHP函数如何返回多个独立JSON对象?现有代码输出不符需求
解决方案
先直接给你能实现需求的代码,再讲背后的逻辑细节:
实现你要的多独立JSON对象格式
function renderJson(PageArray $items) { $individualJsonStrings = []; foreach($items as $item) { // 为每个条目单独创建结构并转成JSON字符串 $singleItemJson = json_encode([ 'title' => [$item->title], 'url' => [$item->url] ]); $individualJsonStrings[] = $singleItemJson; } // 用逗号把所有独立JSON对象拼接起来 return implode(',', $individualJsonStrings); }
改动说明
原来的代码是把所有条目的title和url分别收集到两个大数组里,最后生成一个包含这两个数组的单一JSON对象。现在我们遍历每个条目时,单独为它生成一个包含title(数组形式)和url(数组形式)的结构,转成JSON字符串后存起来,最后用逗号把这些字符串连在一起,就能得到你想要的{"title":["A"],"url":["A"]},{"title":["B"],"url":["B"]}这种输出。
更规范的替代方案(推荐)
要注意:上面的输出格式并不是标准JSON,很多JSON解析工具默认无法直接处理这种多个对象拼接的格式。如果你的消费端可以接受调整,更推荐输出标准的JSON数组(格式为[{"title":["A"],"url":["A"]},{"title":["B"],"url":["B"]}]),代码如下:
function renderJson(PageArray $items) { $jsonItems = []; foreach($items as $item) { $jsonItems[] = [ 'title' => [$item->title], 'url' => [$item->url] ]; } return json_encode($jsonItems); }
这个版本完全符合JSON规范,任何标准JSON解析库都能直接解析成对象/数组列表,后续处理会更省心。
内容的提问来源于stack exchange,提问作者Squish
相关产品推荐
相关产品推荐

