如何将 Laravel 集合数组转换为 json

Posted

技术标签:

【中文标题】如何将 Laravel 集合数组转换为 json【英文标题】:How to convert Laravel collection array to json 【发布时间】:2018-02-26 16:28:16 【问题描述】:

如何将此 Laravel 集合数组转换为如下所示的 json 格式。

//All records from users table.
$users = DB::table('users')->get();

// Required json format.
return '
          "data": [

            
              "DT_RowId": "row_1",
              "id": "Tiger",
              "clear": "Nixon",
              "fsssf": "System Architect",
              "tex": "t.nixon@datatables.net",
              "created_at": "Edinburgh",
              "updated_at": "Edinburgh"
            ,
             
              "DT_RowId": "row_2",
              "id": "Tiger",
              "clear": "Nixon",
              "fsssf": "System Architect",
              "tex": "t.nixon@datatables.net",
              "created_at": "Edinburgh",
              "updated_at": "Edinburgh"
            

          ],
  "options": [],
  "files": []
';

很抱歉这个基本问题,但我无法将它转换成这个 jso。

【问题讨论】:

$users 是一个集合,他有一个方法“->toJson()”。 【参考方案1】:

看看documentation。

您可以使用 toJson(),将集合转换为 json 对象。

$users = DB::table('users')->get()->toJson();
dd($users);

您也可以使用 json_encode 函数以简单的 php 方式完成此操作

$users = json_encode($users);

看看这个link

问候和愉快的编码!

【讨论】:

【参考方案2】:

如果您正在考虑使用刀片模板,您可以使用 @json Blade directive,如下所示:

<script type="text/javascript">
    var PARAMS = @json($params)
</script>

P.S.在 Laravel 5.6 中测试

【讨论】:

【参考方案3】:

添加“使用响应;”

return Response::json([
    'data' => $value
], 200);

希望这会有所帮助!

【讨论】:

这一定是最有用的,只需添加响应库就可以了【参考方案4】:

你可以做几件事,你可以像这样使用默认方法 ->toJson() 和用户集合

$users = DB::table('users')->get();
$users->toJson();

如果您确实遇到问题,您可以使用 php build in json_encode 方法这里是完整文档http://php.net/manual/en/function.json-encode.php

$users = DB::table('users')->get();
json_encode($users)

希望这会有所帮助!

【讨论】:

【参考方案5】:

如果我们是 laravel 5.5,那么你应该使用 eloquent-resources

【讨论】:

【参考方案6】:

在 Laravel 中,您可以像这样轻松地序列化您的 php 对象:

public static function getLocataireByCin($cin)
    
        return Locataire::where('cin', $cin)
            ->first()
            ->toJson(JSON_PRETTY_PRINT);
    

然后在前端检索它(例如使用 js/jquery):

$("#cinLocataire").keyup(function () 
        $.ajax(
            url: " route('Caisse.store') ",
            type: "POST",
            data: 
                cin: $(this).val()
            ,
            success: function (locataireData) 
                var locataire = JSON.parse(locataireData); // <-- here
                console.log(
                    locataire.nom
                );
            ,
        )
    );

【讨论】:

以上是关于如何将 Laravel 集合数组转换为 json的主要内容,如果未能解决你的问题,请参考以下文章

如何将多维数组转换为Laravel中的集合

如何将此集合转换为 Laravel 5.2 中的数组

Laravel 集合将数组转换为对象

将 Laravel 集合/数组转换为 Javascript 数组

Laravel:将 Eloquent 集合转换为数组而不转换元素

Laravel - 将数组转换为雄辩的集合