我正在尝试2天已经解码了json字符串,我使用了json_decode但是这不会按照我的意愿去做,我想以这样的方式对其进行解码,以便所有值都是字符串之后。我从一个Web服务接收一个巨大的json,它包含字符串,bool和整数,当我在php中进行解码时,我希望它们都是字符串,例如,我得到一个像100的int,转换后我想要它“ 100“,或者我得到一个假,转换后我想要它”假“,我想制作一个脚本来扫描使用json_decode后产生的obj数组并将它们转换为字符串但我工作的公司不喜欢那个想法,有人可以帮助我吗?或者给我一个提示?
答案 0 :(得分:1)
尝试使用array_walk_recursive将每个值转换为字符串,如下所示:
<?php
$fruits = json_encode (
array (
'sweet' => array (
'a' => 1,
'b' => false,
'c' => null
),
'sour' => 'lemon'
) );
$fruits = json_decode ( $fruits, true );
array_walk_recursive ( $fruits,
function (&$item, $key)
{
if ($item === true || $item === false)
{
$item = $item ? 'true' : 'false';
}
else if ($item === null)
{
$item = 'null';
}
else
{
$item = ( string ) $item;
}
} );
var_dump ( $fruits );
<击> 撞击>
<击> <?php
$fruits = json_encode (
array (
'sweet' => array (
'a' => 1,
'b' => false
),
'sour' => 'lemon'
) );
$fruits = json_decode ( $fruits, true );
function convertToString(&$item, $key)
{
if ($item === true || $item === false)
{
$item = $item ? 'true' : 'false';
}
else
{
$item = ( string ) $item;
}
}
array_walk_recursive ( $fruits, 'convertToString' );
var_dump ( $fruits );
击> <击> 撞击>
答案 1 :(得分:1)
你无法用json_decode获取字符串。您应该找到一些具有该功能的json库,或者创建一个自定义解析器。
另一种方法是遍历结果数组并更新值。 E.g。
$arr = array(1=>true, 2=>false, 5=>5, 4 =>null, 3=>array(1=>"true", 2=>false));
var_dump($arr);
function update_value(&$item,$key) {
if ($item === null) $item = "null";
elseif ($item === false) $item = "false";
elseif ($item === true) $item = "true";
else $item.="";
// ... so on
}
array_walk_recursive($arr,'update_value');
var_dump($arr);