使用PHP从对象中删除引号

时间:2019-08-06 08:17:19

标签: php json

我有一个json对象。因此我需要删除双引号。

{"1":{"1":"{m:4,preference:1,r:0,tt:0}","2":"{m:4,preference:1,r:0,tt:0}","3":"{m:4,preference:1,r:0,tt:0}"},"2":{"1":"{m:4,preference:1,r:0,tt:0}","2":"{m:4,preference:1,r:0,tt:0}","3":"{m:4,preference:1,r:0,tt:0}"},"3":{"1":"{m:4,preference:1,r:0,tt:0}","2":"{m:4,preference:1,r:0,tt:0}","3":"{m:4,preference:1,r:0,tt:0}"}}

我需要从对象中删除引号。

{"1":{"1":{m:4,preference:1,r:0,tt:0},"2":{m:4,preference:1,r:0,tt:0},"3":{m:4,preference:1,r:0,tt:0}},"2":{"1":{m:4,preference:1,r:0,tt:0},"2":{m:4,preference:1,r:0,tt:0},"3":{m:4,preference:1,r:0,tt:0}},"3":{"1":{m:4,preference:1,r:0,tt:0},"2":{m:4,preference:1,r:0,tt:0},"3":{m:4,preference:1,r:0,tt:0}}}

我尝试过: json_decode($request),json_decode(json_encode($request)) 但没有结果。它返回null

我还需要在键上添加引号

{"m":4,"preference":1,"r":0,"tt":0}

1 个答案:

答案 0 :(得分:0)

您需要首先尝试在发件人上制作有效的json。但是,如果不能,请使用以下代码手动解析源字符串$ str

function like_json_decode($str) {
    $arr = array_map('trim', explode(',', $str));
    $new_arr = [];
    foreach ($arr as &$x) {
        $x = trim($x, ' {}');
        $x = array_map('trim', explode(':', $x));
        $new_arr[$x[0]] = $x[1];
    }
    return $new_arr;
}

$arr = json_decode($str, true);

foreach ($arr as &$subarr) {
    foreach($subarr as &$x) {
        $x = like_json_decode($x);
    }
}
print_r($arr);

demo

相关问题