【问题标题】:Extracting data from JSON failed in PHP在 PHP 中从 JSON 中提取数据失败
【发布时间】:2014-07-08 08:21:01
【问题描述】:
{
    "firstName":"sunny",
    "religion":  {"holly":"1",
    "bolly":"colly",
    "nolly":"only"
},
    "lonely":"money",
    "ronney":"leone",
    "honey":"bunny"
}

这是我的 JSON。我想从中获取所有数据并将其存储到一些 php 变量或数组中。

我使用以下代码从我的 JSON 中提取数据。我先解码它,然后将它存储在一个数组中..

    $val_array = json_decode($jsondata, true);
    echo $jsondata;
    $AAA    = $val_array->firstName;
    $BBB    = $val_array->religion;
    $CCC_id = $val_array->bolly;
    $DDD    = $val_array->nolly;
    $CCC_id = $val_array->lonely;
    $DDD    = $val_array->ronney;

但它没有给我任何输出。然后我就用了这个。

foreach($data['val_array'] as $item)
{
     echo  $item[0];
    }
}

没有输出。帮忙??

【问题讨论】:

  • assoc When TRUE, returned objects will be converted into associative arrays. php.net/manual/en/function.json-decode.php
  • 上面的代码没有任何错误?我可以看到 PHP 应该为您提供错误的许多问题。尝试将error_reporting(E_ALL) 放在脚本的开头。

标签: php arrays json html phpmyadmin


【解决方案1】:

你把第二个参数弄错了:

$val_array = json_decode($jsondata, true);

$AAA = $val_array['firstName'];

$val_array = json_decode($jsondata, false);

$AAA=$val_array->firstName;

【讨论】:

    【解决方案2】:

    您的 JSON 无效。删除最后一个元素后的逗号:

    {
        "firstName" : "sunny",
        "religion" : {
            "holly" : "1",
            "bolly" : "colly",
            "nolly" : "only" # Here
        },
        "lonely"    : "money",
        "ronney"    : "leone",
        "honey"     : "bunny" # And here
    }
    

    【讨论】:

    • @TheJoker json_decode 将返回一个数组,因此您必须使用 [] 运算符访问它。改用$AAA = $val_array['firstName'];
    • 我得到了值..但是如何获取宗教数组中的值? @76200
    【解决方案3】:

    您的 JSON 中有错误:

    "nolly":"only",
    
    "honey":"bunny",
    

    删除这两行末尾的“,”,然后 json_decode() 将返回一个数组。 如果你想要一个对象,不要将第二个参数传递给 json_decode()

    【讨论】:

      【解决方案4】:

      json_decode 默认返回一个对象,但由于您将第二个参数设置为 true,因此您将获得一个包含信息的关联数组。

      这基本上归结为这样一个事实,即您不需要填写第二个参数并获得所需的对象,或者当您将参数设置为true时使用数组。

      稍微阅读一下 PHP.net 对您的进一步参考很有帮助,因为他们的文档很好地呈现,通常被其他人评论并提供有用的建议并且也很干净!

      【讨论】:

        【解决方案5】:
        $val_array = json_decode($jsondata, true);
        
        $m1=$val_array['firstName'];
        $m2=$val_array['lonely'];
        $m3=$val_array['ronney'];
        $m4=$val_array['honey'];
        
        $m4=$val_array['religion']['holly'];
        $m5=$val_array['religion']['bolly'];
        $m6=$val_array['religion']['nolly'];
        

        通过使用它,我们不必使用 foreach 循环或内部循环来访问数据。中提琴!

        【讨论】:

        • 最好解释一下为什么你的代码可以解决问题。见How to Answer
        猜你喜欢
        • 2016-04-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-21
        • 1970-01-01
        • 2015-11-21
        • 2018-10-31
        • 1970-01-01
        相关资源
        最近更新 更多