首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编辑后的json结构差异

编辑后的json结构差异
EN

Stack Overflow用户
提问于 2015-08-19 12:36:51
回答 1查看 36关注 0票数 0

我有json字符串,我必须编辑它,然后将其转换回json。但不幸的是,我无法真正恢复json结构。

原始json字符串($json)的结构:

代码语言:javascript
复制
"[{"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):

代码语言:javascript
复制
"{"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"}}}"

下面是我编辑的内容:

代码语言:javascript
复制
$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相同的结构吗?

EN

回答 1

Stack Overflow用户

发布于 2015-08-19 12:45:02

如果您想避免使用函数object_to_array和array_to_object,该怎么办?在编码部分,这是不必要的,因为json_encode可以处理对象或数组。在第一部分中,可以调用json_decode,并将第二个可选参数设置为true,以生成数组而不是对象。见PHP手册

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32095718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档