2016-05-13 3 views
1

メインJSONの特定の部分にあるLaravel 5.2でJSONファイルをマージしようとしています。メインJSONの特定の部分でLaravel 5.2でJSONファイルをマージする

場合: 私は一つのメインconfig.json

{ 
    "layout": "normal", 
    "modules": [ 
    "module1", "module2", "module3" 
    ] 
} 

私は(この質問のためのminimalised値)のようになり、多くのモジュールのJSONファイル、持っている:

{ 
    "name": "module1", 
    "description": "lorem ipsum" 
} 

私が達成したいこと: "modules"が(module1、module2など)である部分では、他のjsonファイルをお互いにロードしてファイルを保存したいと思います。オブジェクト、それらのそれぞれの、それは理想的に次のようになりますので:

{ 
    "layout": "normal", 
    "modules": [ 
    { 
     "name": "module1", 
     "description": "lorem ipsum" 
    }, 
    { 
     "name": "module2", 
     "description": "lorem ipsum" 
    } 
} 

すべてのファイルがressources /資産/ JSONに保存され、各JSONは、このようなファイル名としてモジュール名を持っている:

/json 
    _module1.json 
    _module2.json 
    .... 

質問: Laravel 5.2でこれをどのように達成できますか?

答えて

0

PHPはJSONデータを直接操作することはできません。 PHPのJSONにデータを追加するには、まずそれを連想配列にデコードし、データを更新してからJSONに再度エンコードする必要があります。

以下はトリックを行う必要があります。

// decode original JSON 
$decodedData = json_decode($json, true); 

// read and decode data for all listed modules into an array  
$moduleData = []; 
foreach ($decodedData['modules'] as $module) { 
    $moduleData[] = json_decode(file_get_contents("json/_$module.json"), true); 
} 

// add module data to the main array 
$decodedData['modules'] = $moduleData; 

// encode back into JSON 
$json = json_encode($decodedData); 
関連する問題