Php 如何在Laravel 5.6 json响应中将空值转换为空字符串?

Php 如何在Laravel 5.6 json响应中将空值转换为空字符串?,php,json,laravel,null,laravel-5.6,Php,Json,Laravel,Null,Laravel 5.6,我从我的Laravel 5.6中得到了以下回复: { "id": 1, "name": "Test", "email": "anything@example.com", "descr": null } 它来自这个LaravelPHPcode: public function show($id) { return Client::find($id); } Laravel 5.6中是否有任何内置函数将空值更改为空?我想找回这个json对象: { "

我从我的
Laravel 5.6
中得到了以下回复:

{
    "id": 1,
    "name": "Test",
    "email": "anything@example.com",
    "descr": null
}
它来自这个Laravel
PHP
code:

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
的文件:

app/Http/Kernel.php
中,确保添加:

$middleware

这应该能奏效。我没有亲自测试过,我只是在路上测试过,如果你有问题,请告诉我


Luca

在返回之前添加此函数


array_walk_recursive($array,function(&$item){$item=strval($item);})

你想要空值而不是空值的具体原因是什么?因为我在前端得到空值,所以我需要写一个“if”语句来处理空值。我处理的许多文本文件(SQL)在数据库中可能为空,但我太懒了,无法处理代码中50多个位置的空值。。。如果这些字段不为null,那么可能会更简单。处理null与处理空字符串有什么不同?不是尴尬,只是也许你不需要空字符串?此外,最好是重构以在正确的点正确地处理数据,而不是进一步改变链条上的某些东西,这可能在以后的好的点上是出乎意料的,但我对答案很确定:)是的,足够公平了
null
表示没有,不存在,而描述的空字符串表示有描述(已设置等),它只是空的。这并不能回答问题。所有这些代码如何比简单地检查
is_null()
更好?甚至是
如果(is_null($desc)){$desc='';}
@James实际上是这样的。他试图以响应的形式返回一个模型,该模型将自动转换为带有返回模型属性的JSON响应。他说他不想在每次需要时检查它是否为空,将其转换为空字符串。我假设他试图通过AJAX请求获得此响应,因此在JavaScript中打印null值将打印字符串
“null”
,而不是空字符串。这段代码只是检查响应是否是一个模型,在这种情况下,将null更改为空字符串并将其作为json响应返回。“在Laravel 5.6中是否有任何内置函数将null值更改为空字符串?”我认为他们特别想使用
return Client::find($id)
以某种方式返回空字符串而不是null。而不是一个完全成熟的新类,它需要在某个地方实例化并插入到当前代码中。这是一个可行的选择,也是为什么我从来没有放弃过,但它没有回答这个问题——那就是“是这样”或“不,你不能”(本质上):@James在这种情况下,你是完全正确的!事实上,地雷可以被视为一种可行的替代品。尽管可能有几种选择。这取决于需要。请确保标记代码并提供有效的代码段。这是一个半片段。
<?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) {
    $modelAsArray = $output->toArray();

    array_walk_recursive($modelAsArray, function (&$item, $key) {
        $item = $item === null ? '' : $item;
    });

    return response()->json($modelAsArray);
}
\App\Http\Middleware\NullToBlank::class,