这是JSON对象
var stockused = { "fuel": { "1": "522", "2": "311" }, "spares": { "1": "6" }}
在序列化之后我将它提交给DB(使用JQuery .serialize()
)。
序列化表单如下所示:
%7B+%22fuel%22%3A+%7B++%221%22%3A+%22522%22%2C++%222%22%3A+%22311%22+%7D%2C+%22spares%22%3A+%7B++%221%22%3A+%226%22+%7D%7D
当我尝试从数据库中检索相同的字段到页面时,我得到这样的结果:
{ \"fuel\": { \"1\": \"522\", \"2\": \"311\" }, \"spares\": { \"1\": \"6\" }}
据我所知,.serialize()
执行了网址编码,我使用urldecode
中的PHP
函数执行了网址解码,以获得上述结果。
如何将此输出作为纯JSON对象?
答案 0 :(得分:2)
你可以先取消字符串:
$unescaped_data = str_replace('\"','"',$data);
使用json_decode对其进行解码。一个班轮:
$json_obj = json_decode(str_replace('\"','"',$data));
OR 您也可以使用stripslashes
$array = json_decode(stripslashes($data), 1);
<强>测试强>
$str = "{ \"fuel\": { \"1\": \"522\", \"2\": \"311\" }, \"spares\": { \"1\": \"6\" }}";
$json_obj = json_decode(stripslashes($str));
$json_array = json_decode(stripslashes($str), 1);
print_r($json_obj);
print "<br />";
print_r($json_array);
输出
stdClass Object ( [fuel] => stdClass Object ( [1] => 522 [2] => 311 ) [spares] => stdClass Object ( [1] => 6 ) )
Array ( [fuel] => Array ( [1] => 522 [2] => 311 ) [spares] => Array ( [1] => 6 ) )