PHP多层级数组转JSON多余方括号问题求助
解决JSON输出中多余的嵌套方括号问题
咱们来快速定位问题:你当前输出里多出来的第二层方括号,根源在代码的Step 2部分。
你看,$tabContent本身就是在do-while循环里构建的数组——每次循环都会把一个包含name和titel的数组push进去,所以它最终是一个包含多个对象的数组。但你在Step 2里又把它包进了一个新数组array( $tabContent ),这就导致JSON序列化后多了一层嵌套的方括号。
修改方案
只需要把Step 2的代码改成直接将$tabContent赋值给$tabelled['repositories'],不需要额外包裹数组:
## Step 1 ################# do{ $tabContent[] = array ( "name" => $row_profile['name'], "titel" => $row_profile['titel'] ); }while ($row_profile = $statement_profile->fetch(PDO::FETCH_ASSOC)); ## Step 2 ################# // 去掉外层的array()包裹,直接赋值$tabContent $tabelled['repositories'] = $tabContent; ## Step 3 ################# header('Content-Type: application/json'); echo json_encode($tabelled, JSON_PRETTY_PRINT);
修改后的输出
这样调整后,生成的JSON就会符合你的期望:
{ "repositories": [ { "name": "test", "titel": "a sdfaf" }, { "name": "Frank wieder", "titel": "test test" } ] }
简单来说就是:$tabContent已经是你需要的数组结构了,不用再给它套一层数组壳~
内容的提问来源于stack exchange,提问作者Pippo
相关产品推荐
相关产品推荐

