从DB检索JSON

时间:2014-04-20 06:14:07

标签: php jquery json

这是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对象?

1 个答案:

答案 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 ) )