从JSON生成php数组定义

时间:2017-11-04 00:34:55

标签: php json

我的问题与大多数人有点不同,我基本上想与Haluk的this question做相反的事。
所以我有一个JSON字符串:

{
    "main":
    {
        "title": "QuickPub",
        "defaultRole": "BU"
    },
    "roles":
    {
        "TU":
        {
            "name": "testUser",
            "code": "TU"
        }
    }
}

我希望能够从中生成包含php数组定义的字符串:

<?php

return [
    "main" =>
    [
        "title" => "QuickPub",
        "defaultRole" => "BU"
    ],
    "roles" =>
    [
        "TU" =>
        [
            "name" => "testUser",
            "code" => "TU"
        ]
    ]
];

?>

编辑: 我已经尝试了json_decode()但是这会生成一个变量,我需要一个字符串,我可以放在一个php文件中,它将重现这个而不使用php_decode。

3 个答案:

答案 0 :(得分:1)

我认为这可以解决您的问题。首先使用json_decode将您的json字符串转换为数组($ string,1);然后使用print_r($ array,1)将该数组转换为字符串表示形式;这将以数组字符串表示形式返回结果。

例如:

 $json='{}' // its a demo
 $array= json_decode($json,1); // an array
 $result = print_r($array,1);
 echo $result;

答案 1 :(得分:0)

这是对Being Sunny的回答的改编,但是使用var_export()函数而不是print_r。

如phihad所述here

  

var_export打印有效的php代码。如果您计算了一些值并希望结果在另一个脚本中作为常量

,则非常有用

脚本:

$json   = '{"main":{"title": "QuickPub","defaultRole": "BU"},"roles":{"TU":{"name": "testUser","code": "TU"}}}';
$array  = json_decode($json, 1);
$result = var_export($array, 1);
echo $result;

产生

array(
    'main'  => array(
        'title'       => 'QuickPub',
        'defaultRole' => 'BU',
    ),
    'roles' => array(
        'TU' => array(
            'name' => 'testUser',
            'code' => 'TU',
        ),
    ),
)

答案 2 :(得分:-1)

这可以使用以下代码实现:

{

这会将[替换为},将]替换为:,将=>替换为;,替换最后的任何空格,追加一个ExtractTextPlugin,并在返回声明之前。

这会在问题栏中生成请求打开和关闭php标记的输出。