PHP json_decode问题
发布时间:2020-12-13 16:02:44 所属栏目:PHP教程 来源:网络整理
导读:我正在尝试使用json_decode组合一些json对象然后重新编码它.我的json看起来像: { "core": { "segment": [ { "id": 7,"name": "test1" },{ "id": 4,"name": "test2" } ] }} 我有一些这些json对象,并希望只为每个组合“segement”数组得到这样的东西: { "seg
我正在尝试使用json_decode组合一些json对象然后重新编码它.我的json看起来像:
{ "core": { "segment": [ { "id": 7,"name": "test1" },{ "id": 4,"name": "test2" } ] } } 我有一些这些json对象,并希望只为每个组合“segement”数组得到这样的东西: { "segment": [ { "id": 7,"name": "test1" },{ "id": 4,"name": "test2" } ],"segment": [ { "id": 5,"name": "test3" },{ "id": 8,"name": "test4" } ] } 现在在我的PHP代码中,我正在解码json,将每个“segment”数组存储到一个字符串中,然后编码json. public function handleJSON($json){ $decodeData = json_decode($json); $segment =$decodeData->core; return $segment; } public function formatJSON(){ $segments = ""; for ($i = 0; $i < count($json);$i++) { $segments .= handleJSON($json[$i]); } echo json_encode($segments); } 当我这样做时,我收到一个错误: 所以我尝试将它们存储在一个数组中: public function formatJSON(){ $segments = array(); for ($i = 0; $i < count($json);$i++) { $segments[$i] = handleJSON($json[$i]); } echo json_encode($segments); } 这一次,我没有得到错误,但它将我的整个组合json对象存储在数组括号中.我怎么能只返回JSON对象,而不是封装在一个数组?
我认为一种方法是利用第二个参数
json_decode,assoc:
我发现通常处理关联数组而不是stdClass类更容易. $str = '{ "core": { "segment": [ { "id": 7,"name": "test2" } ] } }'; print "<pre>"; print_r(json_decode($str)); print "</pre>"; print "<pre>"; print_r(json_decode($str,true)); print "</pre>"; 这首先产生Object版本,然后产生关联数组: stdClass Object ( [core] => stdClass Object ( [segment] => Array ( [0] => stdClass Object ( [id] => 7 [name] => test1 ) [1] => stdClass Object ( [id] => 4 [name] => test2 ) ) ) ) Array ( [core] => Array ( [segment] => Array ( [0] => Array ( [id] => 7 [name] => test1 ) [1] => Array ( [id] => 4 [name] => test2 ) ) ) ) 我想我会做类似的事情,创建新的空白数组,解码为关联数组,抓取段成员并将它们拼接到新的空白数组中.所以: $segments = array(); // assuming you had a bunch of items in the $strings array foreach ($strings as $str) { $item = json_decode($str,true); $segments = array_merge($item['core']['segment],$segments); } 现在,您可以将此编码为json,如下所示: $final_json = json_encode(array('segments'=>$segments)); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |