【问题标题】:PHP how to detect if JSON decoded part is object or arrayPHP如何检测JSON解码部分是对象还是数组
【发布时间】:2016-02-05 09:14:50
【问题描述】:

我有 JSON:

{
    "catalogs": [
        {
            "aa" : "aa",
            "bb" : "bb"
        },
        [
            {
                "cc" : "cc",
                "dd" : "dd"
            },
            {
                "ee" : "ee",
                "ff" : "ff"
            }
        ]
    ]
}

还有 PHP 代码:

<?php 

$catalogs = file_get_contents('test.json');
$catalogs = json_decode( preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $catalogs), true );

$catalogs = $catalogs['catalogs'];
foreach($catalogs as $catalog){
    echo gettype($catalog) . '<br/>';
}

输出是:

array
array

但我需要类似的东西:

object
array

【问题讨论】:

  • 不要将true 作为第二个参数传递给json_decode?这个参数的重点是返回关联数组而不是对象。如果您不想这样,请不要传递true
  • 好的,没有它也可以,但我更喜欢将 json 解码为数组而不是对象,但在这里我需要解码为对象。
  • 嗯,有时你不能拥有一切:P

标签: php json


【解决方案1】:

将 JSON 解码为对象工作:

<?php 

$catalogs = file_get_contents('test.json');
$catalogs = json_decode( preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $catalogs) );

$catalogs = $catalogs->catalogs;
foreach($catalogs as $catalog){
    echo gettype($catalog) . '<br/>';
}

输出:

object
array

【讨论】:

    猜你喜欢
    • 2017-04-27
    • 1970-01-01
    • 1970-01-01
    • 2018-04-10
    • 2019-05-18
    • 2012-04-06
    • 1970-01-01
    • 2020-05-29
    • 2011-12-13
    相关资源
    最近更新 更多