JSON,无法在Laravel中解码

时间:2019-01-14 20:07:33

标签: php json laravel

我当前正在转储对返回JSON数据的API的调用:

<?php dd($info)?>

哪个转储

{#39751 ▼
+"categories": array:19 [▼
0 => {#1065 ▼
  +"category_name": "Block"
  +"category_description": "Description details"
  +"products": array:24 [▼
    0 => {#1070 ▼
      +"price": {
      "01":"100.00"
      }
      +"product_info": {
        "product_code": 123,
        "product_type":{
            "quantity": 2
        }
      }
    }
    1 => {#1070 ▼
      +"price": {
      "01":"200.00"
      }
      +"product_info": {
        "product_code": 112,
        "product_type":{
            "quantity": 3
        }
      }
    }
1 => {#1065 ▼
  +"category_name": "Flat"
  +"category_description": "Description details"
  +"products": array:24 [▼
    0 => {#1070 ▼
      +"price": {
      "01":"100.00"
      }
      +"product_info": {
        "product_code": 221,
        "product_type":{
            "quantity": 2
        }
      }
    }
    1 => {#1070 ▼
      +"price": {
      "01":"200.00"
      }
      +"product_info": {
        "product_code": 223,
        "product_type":{
            "quantity": 3
        }
      }
    }

但是当我这样做时:

dd(json_decode($ info))

它只是返回null,我似乎无法访问它。

有明显的理由可以抛弃它而不在刀片中对其进行解码吗?

更新:

最初尝试通过循环/访问进行测试:

foreach($info as $info->categories) { 
  $category_name = $info->categories['category_name']; 
  dd($category_name);
}

1 个答案:

答案 0 :(得分:1)

foreach($info as $info->categories) { 
    $category_name = $info->categories['category_name']; 
    dd($category_name);
}

代替

foreach($info->categories as $category) {
    $category_name = $category['category_name']; 
    dd($category_name);
}

Laravel是一个框架,可帮助您解决Web应用程序的常见请求/响应生命周期。这样做,它通常会处理对象的序列化和反序列化,以及尽可能处理请求有效负载本身。因此,如果接收到JSON编码的有效负载,它将把它转换成一个数组,或者如果您愿意的话,它甚至可以从该数组创建对象,例如您从任何API发布json编码的数据,并希望将其转换为Category实体。最佳做法是顺便说一句。使用DTO,该DTO在用于层之间通信的数据和实际持久的业务对象之间构建一个层。

要传递对象,例如您可以对模型/实体进行分类,只需将其按原样分配给视图即可。

请注意,该刀片服务器是在服务器上处理的,它在PHP内运行,因此根本不需要解码/编码。如果您确实想在前端中显示JSON表示,只有一种情况。

请注意,dd会发生转储并死掉,因此应用程序不会继续。