我有一个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}
答案 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);