在 laravel 控制器中将数组转换为 json

Posted

技术标签:

【中文标题】在 laravel 控制器中将数组转换为 json【英文标题】:convert an array to json in laravel controller 【发布时间】:2017-04-19 15:37:58 【问题描述】:

大家好,我又遇到问题了。这次是我的 laravel 项目。

我有一个这样的控制器功能:

public function postDetail(Request $request)

  $product_requests = $request->sku;
  $arr = [];

我的$request->sku 看起来像这样:

[612552892 => ['quantity' => '1'], 625512336 => ['quantity' => '10']]

但我需要这样的 json 文件:

["sku_id": 612552892, "quantity": "1", "sku_id": 625512336, "quantity": "10"]

那么,我也应该做钥匙吗?但是..如何?

我认为我必须在 foreach 循环中完成它,对吗?谁能帮帮我?

【问题讨论】:

【参考方案1】:

使用$encodedSku = json_encode($request->sku);,您将获得正确的 JSON 而不是数组。

【讨论】:

啊啊!它改变了,你是对的.. 但它没有 sku_id 那么您将不得不更改数组中的键,或者从您的第一个数组创建一个新数组。 json_encode 猜不出你需要的密钥 ;)【参考方案2】:

您需要在应用json_encode()之后将数组转换为正确的形式,如下所示:

$arrSku = array('612552892' => array('quantity' => 1), '625512336' => array('quantity' => 10) );

$arrNewSku = array();
$incI = 0;
foreach($arrSku AS $arrKey => $arrData)
    $arrNewSku[$incI]['sku_id'] = $arrKey;
    $arrNewSku[$incI]['quantity'] = $arrData['quantity'];
    $incI++;


//Convert array to json form...
$encodedSku = json_encode($arrNewSku);

print('<pre>');
print_r($encodedSku);
print('</pre>');

//Output:
["sku_id":612552892,"quantity":1,"sku_id":625512336,"quantity":10]

希望这对你有用。

【讨论】:

在创建索引$incI 时应该启动关联数组(sku、数量),否则会收到大量警告 @JulienLachal 我在phpFiddle 测试了我的代码,然后我把它放在这里并且工作正常,没有任何错误。希望你能理解。 @ajussi:很高兴为您提供帮助!

以上是关于在 laravel 控制器中将数组转换为 json的主要内容,如果未能解决你的问题,请参考以下文章

无法在laravel中将数组数组转换为没有索引的对象数组

Laravel 雄辩不更新 JSON 列:数组到字符串的转换

在 Laravel api 中将字符串转换为 json

在 Laravel 中将数组转换为集合

在laravel中将对象转换为数组[重复]

在laravel中将对象转换为数组[重复]