在 PHP 中从 JSON 中提取数据失败

Posted

技术标签:

【中文标题】在 PHP 中从 JSON 中提取数据失败【英文标题】:Extracting data from JSON failed in PHP 【发布时间】: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) 放在脚本的开头。 【参考方案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。

以上是关于在 PHP 中从 JSON 中提取数据失败的主要内容,如果未能解决你的问题,请参考以下文章

在 Python 中从 JSON 字符串中提取数据时出错(使用 Redshift)

在 PHP 中从 /Filter /FlateDecode PDF 流中提取数据

在 PHP CodeIgniter foreach 循环中从数据库中提取和更新数据

如何在 Flutter 中从 JSON 中提取图像链接 - 正则表达式

在 Python 中从数组中提取 JSON ID

如何在 Swift 中从 alamofire 中提取数据? [复制]