如何将JSON文件转换为PHP文件,PHP文件包含return []; for include()' ing?

时间:2016-06-04 21:29:00

标签: php json

JSON文件大约是15.000行,最大嵌套级别为7.在大约15次检查后,Schema::table('my_table', function ($table) { $table->string('my_new_column'); }); 需要1.4到2.1秒。我已经手动将JSON文件转换为PHP文件,并在其周围添加了一个额外的数组,前面有一个json_decode()。阅读和处理现在需要0.03秒。

示例JSON文件:

return

所需的PHP文件:

{
  "lvel1": {
      "level2": {
          "level3": [
              1,
              85151,
              895151,
          ]
      }
   }
}

有更简单的方法吗?结果没有产生任何结果,因为它总是归结为将JSON转换为数组PHP"。

2 个答案:

答案 0 :(得分:1)

$json = '...';

$arr = json_decode($json, true);

$phpOutput = 'return ' . var_export($arr, true);

答案 1 :(得分:1)

您可以使用var_export生成类似PHP的代码来写入文件,以防止手动将JSON转换为php。

例如

<?php

$array = [
  'a', 'b', 'c', 'd'
];


// This bit just creates an example json file to read
// a bit like you have in your example, but smaller
$json = json_encode($array);
file_put_contents('data.json', $json);

// Let's read it again just to show how to retrieve it
$retrieved = file_get_contents('data.json');

// Make it into a PHP array
$newArray = json_decode($retrieved);

var_export($newArray, true);

// Save it into a php file with a return and a ;
file_put_contents('data.php', "return {$phpArray};");
然后

data.php包含

return array (
  0 => 'a',
  1 => 'b',
  2 => 'c',
  3 => 'd',
);