如何在 Laravel 中解码 JSON 对象

Posted

技术标签:

【中文标题】如何在 Laravel 中解码 JSON 对象【英文标题】:How to Decode JSON object in Laravel 【发布时间】:2016-06-27 15:02:18 【问题描述】:

我想在 Laravel 5.1 中解码画廊数组 JSON 对象。我的 JSON 是:


  "title": "aaaaaaaaaaaaaaaa",
  "category_id": "1",
  "user_id": "1",
  "gallery": "[name: \"XCB808tvXNpqXKqekA2HlkJ8H.jpg\",size:5112,name: \"s6kA6B0e5m1sdSAjPXqNwtiy4.jpg\", size: 13135]"

当我使用此代码时,请回复我null

public function store(Request $request)
    
         $json = json_decode($request['gallery'],true);
         return $json;
    

这是dd($request['gallery']) 结果

['name': "XCB808tvXNpqXKqekA2HlkJ8H.jpg",'size':5112,'name': "s6kA6B0e5m1sdSAjPXqNwtiy4.jpg", 'size': 13135]

【问题讨论】:

请留下您的完整代码 gallery 不是 JSON 对象,而是 JSON 对象的列表,所以首先划分它们 - 你可以使用 explode() 爆炸应该怎么办? dd( $request['gallery'] ) 的结果是什么? ['name': "XCB808tvXNpqXKqekA2HlkJ8H.jpg",'size':5112,'name': "s6kA6B0e5m1sdSAjPXqNwtiy4.jpg", 'size': 13135] 【参考方案1】:

我不太确定您的程序流程,但是当您将 Request 依赖项注入到 store 函数时,我假设 JSON 对象是您的请求的一部分。这种情况,你可以试试,

$input   = $request->json()->all();

只需 print_r($input) 看看你得到了什么。

如果 JSON 对象不是您的请求的一部分,则您错过了将 $json 传递给您的函数。不过,这是一个疯狂的猜测!

【讨论】:

【参考方案2】:

解码过程是对的。我认为你的问题是你可能有一个格式错误的 JSON 字符串。

用双引号替换属性名称周围的单引号:

["name": "XCB808tvXNpqXKqekA2HlkJ8H.jpg","size":5112,"name": "s6kA6B0e5m1sdSAjPXqNwtiy4.jpg", "size": 13135]

【讨论】:

【参考方案3】:

你可以使用 Response::json($value);

【讨论】:

【参考方案4】:

只是因为尝试获取 json 格式的响应(Laravel 8.8.0)而遇到同样的问题。我能够让它工作的方式是使用:

$jsonFormattedResult = json_decode ($response->content(), true);

希望它可以帮助某人。 ('-')/

【讨论】:

以上是关于如何在 Laravel 中解码 JSON 对象的主要内容,如果未能解决你的问题,请参考以下文章

如何在关系表laravel 5.8中解码Json数据

如何在laravel刀片中从json解码中回显键名和键值

如何在 laravel join 中解码

我如何很好地解码Laravel失败的工作JSON

如何在 Swift 中解码一个命名的 json 对象数组

如何在 PHP 中 JSON 编码/解码后维护对象状态