如何正确格式化 JSON Laravel 5.5

How to Format JSON correctly Laravel 5.5

我正在尝试将活动加载到日历中。

因此我需要用事件数据创建一个 JSONstring,但我不知道该怎么做。

我如何创建数据:

$tickets = Ticket::where('mechanic_id', $request->mechanic_id)->get();

$tickets_json[] = [];

foreach($tickets as $ticket) {
    $tickets_json['title'] = $ticket->number;
    $tickets_json['start'] = $ticket->planned_timestamp_start->format('d-m-Y H:i');
    $tickets_json['end'] = $ticket->planned_timestamp_end->format('d-m-Y H:i');
    $tickets_json['url'] = '/tickets/' . $ticket->id;
}

这个returns:

array:5 [▼
  0 => []
  "title" => "452"
  "start" => "27-10-2017 09:00"
  "end" => "27-10-2017 12:00"
  "url" => "/tickets/2"
]

这不是我想要和需要的。

我需要这样的 :

{
title: '63782136',
start: '27-10-2017 09:00',
end: '"27-10-2017 12:00"',
url: '/tickets/2'
},  
{
title: '23123',
start: '27-10-2017 09:00',
end: '"27-10-2017 12:00"',
url: '/tickets/3'
},  
{
title: '432512',
start: '27-10-2017 09:00',
end: '"27-10-2017 12:00"',
url: '/tickets/4'
},  

我试过:

return response()->json($tickets_json);

但是 return 格式不正确:

#data: "{"0":[],"title":"452","start":"27-10-2017 09:00","end":"27-10-2017 12:00","url":"\/tickets\/2"}"

添加 {"0":[],} .

提前致谢。

您错误地将数据分配给了数组的第一维,而您却想在第二维中分配数据。以下应该可以解决问题:

$tickets_json = [];

$tickets->each(function ($ticket) use (&$tickets_json) {
    $tickets_json[] = [
        'title' => $ticket->numer,
        'start' => $ticket->planned_timestamp_start->format('d-m-Y H:i'),
        'end' => $ticket->planned_timestamp_end->format('d-m-Y H:i'),
        'url' => '/tickets/' . $ticket->id
    ];
});

return $tickets_json;

此代码将为您提供格式正确的数组,您可以使用该数组获得以下 JSON 输出:

[
    {
        "title": "63782136",
        "start": "27-10-2017 09:00",
        "end": "27-10-2017 12:00",
        "url": "/tickets/2"
    },  
    {
        "title": "23123",
        "start": "27-10-2017 09:00",
        "end": "27-10-2017 12:00",
        "url": "/tickets/3"
    }
]