doutongfu9484 2017-10-27 12:43
浏览 71
已采纳

如何正确格式化JSON Laravel 5.5

i'm trying to load events into a calendar.

Therefore i need to make a JSONstring with the event data but i can't figure out how to do this.

how i create the data:

$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;
}

This returns:

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

This is not what i want and need.

I need it like this :

{
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'
},  

I have tried:

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

But doesn't return the correct format:

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

It adds {"0":[],} .

Thanks in advance.

  • 写回答

1条回答 默认 最新

  • doucitao2944 2017-10-27 12:47
    关注

    You're making the mistake of assigning your data to the first dimension of the array when you want it in the second dimension. The following should do the trick:

    $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;
    

    This code will give you a proper formatted array which you can use to get the following JSON output:

    [
        {
            "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"
        }
    ]
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!