gpt4 book ai didi

PHP json_decode问题

转载 作者:可可西里 更新时间:2023-11-01 13:09:04 24 4
gpt4 key购买 nike

我正在尝试使用 json_decode 组合一些 json 对象,然后重新编码。我的 json 看起来像:

{
"core": {
"segment": [
{
"id": 7,
"name": "test1"
},
{
"id": 4,
"name": "test2"
}
]
}
}

我有一些这样的 json 对象,我想只组合每个 json 对象的“segement”数组来得到这样的东西:

{
"segment": [
{
"id": 7,
"name": "test1"
},
{
"id": 4,
"name": "test2"
}
],
"segment": [
{
"id": 5,
"name": "test3"
},
{
"id": 8,
"name": "test4"
}
]
}

现在在我的 php 代码中,我正在解码 json,将每个“段”数组存储到一个字符串中,然后对 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);
}

当我这样做时,我收到一个错误:类 stdClass 的对象无法转换为字符串

然后我尝试使用将它们存储在数组中:

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 的第二个参数, 关联:

"When TRUE, returned objects will be converted into associative arrays."

我发现通常处理关联数组比处理 stdClass 类更容易。

$str = '{
"core": {
"segment": [
{
"id": 7,
"name": "test1"
},
{
"id": 4,
"name": "test2"
}
]
}
}';
print "<pre>";
print_r(json_decode($str));
print "</pre>";
print "<pre>";
print_r(json_decode($str,true));
print "</pre>";

这首先产生对象版本,然后是关联数组:

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));

关于PHP json_decode问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1713754/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com