Php 从包含数组值的字符串转换JSON
作为以下字符串,使用json_decode将其转换为数组。但是,转换后,Php 从包含数组值的字符串转换JSON,php,Php,作为以下字符串,使用json_decode将其转换为数组。但是,转换后,TbManager:useraccess[]的值仍然是一个字符串 TbManager:useraccess[]可以通过再次调用json_decode将其转换为数组,json_decode($json['TbManager:useraccess[]]),但是如何在第一次json_decode调用中转换它呢 $json = '{ "TbUser:username":"admin", "TbManager:userAccesses
TbManager:useraccess[]
的值仍然是一个字符串
TbManager:useraccess[]
可以通过再次调用json_decode将其转换为数组,json_decode($json['TbManager:useraccess[]]
),但是如何在第一次json_decode调用中转换它呢
$json = '{
"TbUser:username":"admin",
"TbManager:userAccesses[]":"[\"1\",\"8\"]"
}'
// converted to JSON with 'TbManager:userAccesses[]':string
// how to conver TbManager:userAccesses[] as array type
$json = json_decode($json)
在那里,这是一个单独的值,“[\“1\”,\“8\”]”
根据JSON语法,它不是一个数组,因此您可以看到输出
当值为
$json = '{
"TbUser:username":"admin",
"TbManager:userAccesses":[1,8]
}';
在那里,这是一个单独的值,“[\“1\”,\“8\”]”
根据JSON语法,它不是一个数组,因此您可以看到输出
当值为
$json = '{
"TbUser:username":"admin",
"TbManager:userAccesses":[1,8]
}';
这是因为JSON数据的格式不好。JSON数据的正确格式:
{"TbUser:username":"admin","TbManager:userAccesses[]":[1,8]}
在您的代码中,它将是:
$json = '{
"TbUser:username":"admin",
"TbManager:userAccesses[]":[1,8]
}';
然后:
var_dump($json);
将输出:
object(stdClass)#1 (2) {
["TbUser:username"] => string(5) "admin"
["TbManager:userAccesses[]"] => array(2) {
[0] => int(1)
[1] => int(8)
}
}
这是因为JSON数据的格式不好。JSON数据的正确格式:
{"TbUser:username":"admin","TbManager:userAccesses[]":[1,8]}
在您的代码中,它将是:
$json = '{
"TbUser:username":"admin",
"TbManager:userAccesses[]":[1,8]
}';
然后:
var_dump($json);
将输出:
object(stdClass)#1 (2) {
["TbUser:username"] => string(5) "admin"
["TbManager:userAccesses[]"] => array(2) {
[0] => int(1)
[1] => int(8)
}
}
您的$json应该如下所示
{"TbUser:username":"admin","TbManager:userAccesses[]":[1,8]}"
在本例中,“TbManager:useraccess[]”将是json_解码后的数组
{"TbUser:username":"admin","TbManager:userAccesses[]":[1,8]}"
在本例中,“TbManager:useraccesss[]”将在json_解码后成为数组,如上所述,它不是一个有效的json字符串,但如果这是您得到的,下面是一个将这些值转换为数组的代码段:
$json = '{
"TbUser:username":"admin",
"TbManager:userAccesses[]":"[\"1\",\"8\"]"
}';
$json = json_decode($json);
array_walk_recursive($json, function (&$item, $key)
{
if (substr($key, -2) == '[]') {
$item = json_decode($item);
}
});
print_r($json);
如上所述,它不是一个有效的json字符串,但如果您得到的是这个字符串,那么下面是一个将这些值转换为数组的代码段:
$json = '{
"TbUser:username":"admin",
"TbManager:userAccesses[]":"[\"1\",\"8\"]"
}';
$json = json_decode($json);
array_walk_recursive($json, function (&$item, $key)
{
if (substr($key, -2) == '[]') {
$item = json_decode($item);
}
});
print_r($json);
坏的或不适合目的格式?不适合目的听起来更好:/坏的或不适合目的格式?不适合目的听起来更好:/Tmanager:UserAccesss[]在json_解码后的输出是[“1”,“8”],并且,如果1,8是字符串,如何声明Tmanager:UserAccesss[]是字符串?通过使用单引号?我明白了,这是因为引用了
[]
,因为有一个引号,处理器将其用作字符串。在json_解码后,TbManager:useraccess[]的输出是[“1”,“8”],并且,如果1,8是字符串,如何声明TbManager:useraccess[]是字符串?通过使用单引号?我明白了,这是因为引用了[]
,因为有一个引号,处理器将其用作字符串