![](/img/trans.png)
[英]Laravel 5.6 how to preserve float and int values in json response?
[英]How to convert null values to empty string in Laravel 5.6 json response?
我的Laravel 5.6
有這個回復:
{
"id": 1,
"name": "Test",
"email": "anything@example.com",
"descr": null
}
它來自這個 Laravel PHP
代碼:
public function show($id) {
return Client::find($id);
}
Laravel 5.6 中是否有任何內置函數可以將空值更改為空字符串? 我想取回這個 json 對象:
{
"id": 1,
"name": "Test",
"email": "anything@example.com",
"descr": ""
}
有什么想法嗎?
如果您別無選擇並且確實需要它,則可以使用中間件來完成此操作。
使用以下代碼在文件夾app/Http/Middleware
創建一個名為NullToBlank.php
的文件:
<?php
namespace App\Http\Middleware;
use Illuminate\Database\Eloquent\Model;
use Closure;
class NullToBlank
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$output = $next($request);
if($output instanceof Model)
return response()->json(array_map(function ($value) {
return $value === null ? '' : $value;
}, $output->toArray()));
return $output;
}
}
當您只需要更改返回模型而不是相關模型的值時,就會出現這種情況。 在返回+所有相關模型的情況下,條件if($output instanceof Model)
更改為:
if($output instanceof Model) {
$modelAsArray = $output->toArray();
array_walk_recursive($modelAsArray, function (&$item, $key) {
$item = $item === null ? '' : $item;
});
return response()->json($modelAsArray);
}
在您的app/Http/Kernel.php
確保添加:
\App\Http\Middleware\NullToBlank::class,
在$middleware
。
這應該可以解決問題。 我沒有親自測試過,我只是在旅途中測試過,如果您有問題,請告訴我。
盧卡
返回前添加此函數
array_walk_recursive($array,function(&$item){$item=strval($item);});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.