【问题标题】:Parsing JSON array causes error: unexpected '->' (T_OBJECT_OPERATOR [duplicate]解析 JSON 数组会导致错误:意外 '->' (T_OBJECT_OPERATOR [重复]
【发布时间】:2016-12-20 14:46:13
【问题描述】:

我有一个我正在尝试解析的 JSON 数据,但我的代码无法正常工作。我得到了错误

意外的“->”(T_OBJECT_OPERATOR)。

数组结构如下:

Array
(
    [mautic.lead_post_save_update] => Array
        (
            [0] => Array
                (
                    [lead] => Array
                        (
                            [isPublished] => 1
                            [dateAdded] => 2016-09-15T08:08:20+00:00
                            [createdBy] => 1
                            [createdByUser] => Deepak Tiwari
                            [dateModified] => 2016-12-20T14:20:36+00:00
                            [modifiedBy] => 1
                            [modifiedByUser] => Deepak Tiwari
                            [id] => 149269
                            [points] => 100
                            [color] => 
                            [fields] => Array
                                (
                                    [core] => Array
                                        (
                                            [compulsation] => Array
                                                (
                                                    [id] => 39
                                                    [label] => Job 
                                                    [alias] => compulsation
                                                    [type] => text
                                                    [group] => core
                                                    [field_order] => 2
                                                    [object] => lead
                                                    [value] => 0

等等。我需要访问“工作完成”的价值。我使用的代码是:

$json = file_get_contents('php://input');

$data=json_decode($json,TRUE);
$job=data->mautic.lead_post_save_update->0->lead->fields->core->compulsation->value;

$job 没有任何价值。

【问题讨论】:

  • 使用[]操作符而不是->访问数组
  • 它是一个数组而不是一个对象

标签: php arrays json


【解决方案1】:

您正在使用对象属性语法 (->) 来访问数组元素,这是行不通的。您的代码应使用数组语法 ([...]),如下所示:

$json = file_get_contents('php://input');

$data=json_decode($json,TRUE);
$job=data['mautic.lead_post_save_update'][0]['lead']['fields']['core']['compulsation']['value'];

这就是错误消息试图告诉您的内容。一个像样的 IDE,如 PHPStorm(无从属关系),将帮助您捕获此类错误。

【讨论】:

  • 非常感谢!! ,它有效。我想知道为什么 -> 不工作,我有其他代码在其中使用 -> 访问
  • @DeepakTiwari -> 是访问 object 属性的正确语法。如果您有一个 array,这就是您上面的 print_r() 输出所显示的,那么您必须使用括号([])。
  • 谢谢。我是 php 新手。谢谢你救了我的命。我从过去 15-20 小时开始尝试这个
【解决方案2】:

您的 json_decode() 没有创建对象。它是一个数组,您可以使用 [] 而不是 ->

来获取变量

【讨论】:

  • $job=$data['mautic.lead_post_save_update'][0]['Lead']['fields']['core']['compulsation']['value'];
  • $job=$data[0][0][0][10][0][0][7];我尝试通过更改来访问它,但仍然没有任何价值
猜你喜欢
  • 2014-09-08
  • 2018-06-23
  • 1970-01-01
  • 2017-03-08
  • 2013-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-28
相关资源
最近更新 更多