我有json字符串,我必须编辑它,然后将其转换回json。但不幸的是,我无法真正恢复json结构。
原始json字符串($json)的结构:
"[{"Language":{"0":"EN"},"Text":{"0":"xxx"},"ContentType":{"0":"PlainText"}},
{"Language":{"0":"DE"},"Text":{"0":"xxx"},"ContentType":{"0":"PlainText"}},
{"Language":{"0":"FR"},"Text":{"0":"xxx"},"ContentType":{"0":"PlainText"}}]"编辑后得到的结构($newJson):
"{"0":{"Language":{"0":"EN"},"Text":{"0":"yyy"},"ContentType":{"0":"PlainText"}},
"1":{"Language":{"0":"DE"},"Text":{"0":"yyy"},"ContentType":{"0":"PlainText"}},
"2":{"Language":{"0":"FR"},"Text":{"0":"yyy"},"ContentType":{"0":"PlainText"}}}"下面是我编辑的内容:
$jsonArray = object_to_array(json_decode($json));
$editedJsonArray = someLoopStuff($jsonArray);
$newJson = json_encode(array_to_object(($editedJsonArray)));
function object_to_array($obj) {
if(is_object($obj)) $obj = (array) $obj;
if(is_array($obj)) {
$new = array();
foreach($obj as $key => $val) {
$new[$key] = $this->object_to_array($val);
}
}
else $new = $obj;
return $new;
}
function array_to_object($a) {
if (is_array($a) ) {
foreach($a as $k => $v) {
$a[$k] = $this->array_to_object($v);
}
return (object) $a;
}
return $a;
}你知道我怎么能得到和原来的json相同的结构吗?
发布于 2015-08-19 12:45:02
如果您想避免使用函数object_to_array和array_to_object,该怎么办?在编码部分,这是不必要的,因为json_encode可以处理对象或数组。在第一部分中,可以调用json_decode,并将第二个可选参数设置为true,以生成数组而不是对象。见PHP手册。
https://stackoverflow.com/questions/32095718
复制相似问题