【问题标题】:i am getting error while accessing data from a json response [duplicate]从 json 响应访问数据时出现错误 [重复]
【发布时间】:2020-04-05 14:18:56
【问题描述】:

我在尝试访问从 json 响应返回的数据数组时收到错误undefined property data

{
    "data": [
        {---},
        {---}
    ],
    "links": {---},
    "meta": {---}
}

我正在像这样访问数据

$posts->data

为了记录,我尝试了$posts->data[0]"$posts["data"],但没有一个有效。

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    这是一个 json,您无法使用对象/数组方法访问它。

    首先你必须像这样解码你的 json 对象:

     $posts = json_decode($posts);  //object output
    
     $posts = json_decode($posts,true); //array output
    

    然后像这样访问它:

     $posts->data     //object
    
     $posts['data']  //array
    

    留意嵌套的data 数组。为了访问其中的值,您必须围绕它进行循环。

    【讨论】:

    • 对不起,我之前忘了提,但我确实尝试过json_decode(),但它给出了 error:json_decode() Expects parameter 1 to be string
    • 那么您的输出不是您向我们展示的。如果您的 $posts 是您在问题描述中输入的 json,那么 json_decode 会起作用。
    • 完全一样,我刚刚删除了每个属性中的数据,只是为了使其更紧凑和易于理解。
    • 你说的是不可能的,检查你的代码。 json 是一个字符串,而 json_decode 需要一个字符串输入。通过获取您提到的错误意味着 $posts 不是 json 字符串。尝试对其进行 var_dump ,但可以确保您的变量 $posts 不包含 json 字符串类型值。也许你覆盖它?也许在您尝试解码时它为空?也许它是一个数组或其他东西,但可以肯定它不是一个 json 字符串
    • 是的,我明白,得到的响应实际上是一个 json 对象,ErrorException: json_decode() 期望参数 1 是字符串,给定对象
    【解决方案2】:

    您确定您在该响应中得到数组吗?尝试转储整个响应并检查您得到了什么。

    【讨论】:

    • 我得到 json 对象作为响应,但是当我尝试访问 data 属性时,箭头运算符不起作用。
    • 你能把它贴在这里吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-03
    • 1970-01-01
    • 2017-11-08
    • 2016-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多