首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该如何处理可能有对象或数组值的键?

我应该如何处理可能有对象或数组值的键?
EN

Stack Overflow用户
提问于 2011-05-24 23:50:48
回答 1查看 51关注 0票数 0

我目前有一些代码,从一个网站抓取一些JSON。这基本上就是我目前所做的。

代码语言:javascript
复制
$valueObject = array();
if (isset($decoded_json->NewDataSet)) {
             foreach ($decoded_json->NewDataSet->Deeper as $state) {
                 $i = count($valueObject);
                 $valueObject[$i] = new ValueObject();
                 $valueObject[$i]->a = $state->a;
}

现在,当只有一个“更深的”时,问题就出现了。服务器将其作为JSON对象返回。然后,$state成为更深层对象中的每个键。例如,$state->a直到位置7左右才会存在。当Deeper的计数为1时,有没有办法将deeper从JSON对象转换为数组?

希望这有助于说明我的问题:

代码语言:javascript
复制
"NewDataSet": {
        "Deeper": [
            {
                "a": "112",
                "b": "1841"
            },
            {
                "a": "111",
                "b": "1141"
            }
        ]
    }
}

对比

代码语言:javascript
复制
"NewDataSet": {
        "Deeper":
            {
                "a": "51",
                "b": "12"
            }
}

将以上内容转换为

代码语言:javascript
复制
"NewDataSet": {
      "Deeper": [
           {
               "a": "51",
               "b": "12"
           }
       ]
}

那就太好了。我不知道该怎么做

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-25 00:10:12

在此之前

foreach ($decoded_json->NewDataSet->Deeper as $state)

您可能想要:

代码语言:javascript
复制
if (is_array($decoded_json->NewDataSet)) {
    // This is when Deeper is a JSON array.
    foreach ($decoded_json->NewDataSet->Deeper as $state) {
        // ...
    }
} else {
    // This is when Deeper is a JSON object.
}

更新

如果您只想将$decoded_json->NewDataSet->Deeper转换为数组,那么:

代码语言:javascript
复制
if (!is_array($decoded_json->NewDataSet->Deeper)) {
    $decoded_json->NewDataSet->Deeper = array($decoded_json->NewDataSet->Deeper);
}

foreach ($decoded_json->NewDataSet->Deeper as $state) {
    // ...
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6113183

复制
相关文章

相似问题

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