如何在Laravel 5.6中转换json文件中的json数据

时间:2018-10-08 11:35:30

标签: php json laravel

我需要转换文件.json中的json数据。我用这段代码将数据解析到array of json

$movies = Movie::all();
return response()->json($movies);

我需要创建movies.json文件。我的文件必须在哪里,哪个文件夹?以及如何?

4 个答案:

答案 0 :(得分:1)

使用

use Illuminate\Support\Facades\Storage;

然后

Storage::disk('public')->put('movies.json', response()->json($movies));

此文件将保存在公用文件夹中

答案 1 :(得分:1)

在您的web.php

Route::get('/download','MoviesController@downloadJSON')->name('download_movies');

将以下代码粘贴到您的控制器中:

 public function downloadJSON(Request $request){
         $table = Movie::all();
         $filename = "movies.json";
         $handle = fopen($filename, 'w+');
         fputs($handle, $table->toJson(JSON_PRETTY_PRINT));
         fclose($handle);
         $headers = array('Content-type'=> 'application/json');
         return response()->download($filename,'movies.json',$headers);
    }

详细了解Response download

答案 2 :(得分:0)

根据您要在服务器上创建文件的事实,也许可以像这样使用Laravel中的文件存储功能

use Illuminate\Support\Facades\Storage;

$movies = Movie::all();
Storage::put('Movies.json', $movies);
return true;

将来,如果您想以下载形式提供它,则可以创建一个响应宏。对于HTML下载,我也做了同样的事情

文件:App \ Providers \ AppServiceProvider @ boot

\Response::macro('attachment', function ($content) {

            $headers = [
                'Content-type' => 'text/json',
                'Content-Disposition' => "attachment; filename='Movies.json'",
            ];

            return \Response::make($content, 200, $headers);

        });

并命名为

return response()->attachment($movies); //App\Providers\AppServiceProvider

答案 3 :(得分:0)

这是简单的方法

use File 
File::put(public_path('/upload/json/'.$fileName),$data);

$ fileName是文件名。 $ data是要存储在此文件中的数据。