如何读取可以有不同条目的json文件

时间:2018-03-28 00:31:00

标签: json

我有json文件,其中各个字段可以更改。

       "eventHistory": [{
        "occurredAt": "2018-03-17T10:40:05.707 0000",
        "calluuid": "G8EMGR6EKD7DLDRP79FOEONVQ4000031",
        "eventId": "2018-03-17T10:40:05.707Z_1521283205_G8EMGR6EKD7DLDRP79FOEONVQ4000031",
        "event": "Data",
        "data": {
            "added": {
                "OtherTrunkName": "sbc-trunk",
                "OriginationDN": "1234",
                "BusinessCall": "0",
                "OriginationDN_location": "MNLSwitch"
            }
        }
    }, {
        "occurredAt": "2018-03-17T10:40:06.033 0000",
        "calluuid": "G8EMGR6EKD7DLDRP79FOEONVQ4000031",
        "eventId": "2018-03-17T10:40:06.033Z_1521283206_G8EMGR6EKD7DLDRP79FOEONVQ4000031",
        "event": "Data",
        "data": {
            "added": {
                "IW_CaseUid": "04d575ba-32e3-48da-8986-a19a6ff493b3",
                "IW_BundleUid": "bf3ac19e-e2ea-4d7b-9b48-ef5e17dfdaa1"
            }
        }
    }, {
        "occurredAt": "2018-03-17T10:40:10.407 0000",
        "calluuid": "G8EMGR6EKD7DLDRP79FOEONVQ4000031",
        "eventId": "2018-03-17T10:40:10.407Z_1521283210_G8EMGR6EKD7DLDRP79FOEONVQ4000031",
        "event": "Data",
        "data": {
            "added": {
                "WrapUpTime": "0"
            },
            "deleted": {
                "OriginationDN_location": "MNLSwitch",
                "OriginationDN": "1234"
            }
        }
    }, 

是否容易'简单地阅读并将这些作为变量添加到js的方法。我收集每个字段然后发布到PHP保存。 然后我需要在树上显示......另一个问题也可能出现在那个问题上。 任何帮助非常感谢。

1 个答案:

答案 0 :(得分:0)

目前还不清楚是否需要在JS文件中声明变量,或者只是想要提取每个键和值对。因此,我提供了两种可能对您的用例有用的方法。

建议:如果无关紧要,为什么不在PHP保存脚本中处理整个JSON对象?

1。提取键值对

如果您需要递归JS函数来获取所有键和值,则可以使用此函数,该函数从here引用。

警告:此函数忽略具有嵌套键值对的键,因此您需要根据需要对其进行修改。

var json = `
        {
    "occurredAt": "2018-03-17T10:40:06.033 0000",
    "calluuid": "G8EMGR6EKD7DLDRP79FOEONVQ4000031",
    "eventId": "2018-03-17T10:40:06.033Z_1521283206_G8EMGR6EKD7DLDRP79FOEONVQ4000031",
    "event": "Data",
    "data": {
        "added": {
            "IW_CaseUid": "04d575ba-32e3-48da-8986-a19a6ff493b3",
            "IW_BundleUid": "bf3ac19e-e2ea-4d7b-9b48-ef5e17dfdaa1"
        }
    }
}
        `
var obj = JSON.parse(json);

iterate(obj,'');

function iterate(obj, stack) {
    for (var property in obj) {
        if (obj.hasOwnProperty(property)) {
            if (typeof obj[property] == "object") {
                iterate(obj[property], stack + '.' + property);
            } else {
                console.log(property + "   " + obj[property]); //get key and value pair here
            }
        }
    }
}

2。在JS

中声明变量

如果需要在JS <script>标记中声明变量,可以考虑使用PHP生成包含声明变量的HTML页面。

下面的代码生成一个带有以下脚本标记的html文件:

script tag of html generated

优势:这种方法可以让您获得创意,并生成许多特定于变量的JS代码。

缺点:调试这可能很难。

警告:下面的例子不是递归的,所以你必须自己做。

<?php
$string = <<<EOD
{
    "occurredAt": "2018-03-17T10:40:06.033 0000",
    "calluuid": "G8EMGR6EKD7DLDRP79FOEONVQ4000031",
    "eventId": "2018-03-17T10:40:06.033Z_1521283206_G8EMGR6EKD7DLDRP79FOEONVQ4000031",
    "event": "Data",
    "data": {
        "added": {
            "IW_CaseUid": "04d575ba-32e3-48da-8986-a19a6ff493b3",
            "IW_BundleUid": "bf3ac19e-e2ea-4d7b-9b48-ef5e17dfdaa1"
        }
    }
}

EOD;

$json = json_decode($string);
echo '<script>';
foreach($json as $key => $value) 
{
$output = <<<EOD

var  $key = "$value";
EOD;
echo $output;
}
echo '</script>';
?>