Разбор файла JSON с помощью PHP

Я пытаюсь получить данные из следующего файла JSON, используя PHP. Я специально хочу @name и дополнительные параметры в приведенной ниже иерархии, анализируются и помещаются в табличный формат, который легко читается как HTML.

Учитывая, что у нас может быть много типов и подтипов, мы хотим понять, как этого можно достичь в php, в интерактивном режиме.

Наверное, все очень просто, но я понятия не имею, как это сделать. Я застрял на том, что делать после file_get_contents("output.json")

{
  "{http://pmd.sourceforge.net/report/2.0.0}pmd": {
    "@{http://www.w3.org/2001/XMLSchema-instance}schemaLocation": "http://pmd.sourceforge.net/report/2.0.0 http://pmd.sourceforge.net/report_2_0_0.xsd",
    "@version": "6.4.0",
    "@timestamp": "2018-06-19T07:50:03.152",
    "{http://pmd.sourceforge.net/report/2.0.0}file": [{
        "@name": "/opt/folder/file.cls",
        "{http://pmd.sourceforge.net/report/2.0.0}violation": [{
            "@rule": "AvoidGlobalModifier",
            "@priority": "3",
            "@externalInfoUrl": "https://rule.html",
            "@endcolumn": "2",
            "@ruleset": "Best Practices",
            "@begincolumn": "30",
            "@beginline": "21",
            "@endline": "313",
            "#tail": "\n",
            "#text": "\nAvoid using global modifier\n"
        }, {
            "@rule": "StdCyclomaticComplexity",
            "@priority": "3",
            "@externalInfoUrl": "https://rule.html",
            "@endcolumn": "2",
            "@ruleset": "Design",
            "@begincolumn": "30",
            "@beginline": "21",
            "@endline": "313",
            "#tail": "\n",
            "#text": "\nThe class 'Class' has a Standard Cyclomatic Complexity of 5 (Highest = 18).\n"
        },  {
            "@rule": "ExcessiveParameterList",
            "@priority": "3",
            "@externalInfoUrl": "https://rule.html",
            "@endcolumn": "6",
            "@ruleset": "Design",
            "@begincolumn": "29",
            "@beginline": "219",
            "@endline": "242",
            "#tail": "\n",
            "#text": "\nAvoid long parameter lists\n"
        }, {
            "@rule": "Violation",
            "@priority": "3",
            "@externalInfoUrl": "https://rule.html",
            "@endcolumn": "14",
            "@ruleset": "Security",
            "@begincolumn": "16",
            "@beginline": "252",
            "@endline": "264",
            "#tail": "\n",
            "#text": "\nValidate CRUD permission before SOQL/DML operation\n"
        }],
        "#tail": "\n",
        "#text": "\n"
    }, {
        "@name": "/opt/folder/file2.cls",
        "{http://pmd.sourceforge.net/report/2.0.0}violation": {
            "@rule": "CRUDViolation",
            "@priority": "3",
            "@externalInfoUrl": "https://rule.html",
            "@endcolumn": "148",
            "@ruleset": "Security",
            "@begincolumn": "73",
            "@beginline": "15",
            "@endline": "15",
            "#tail": "\n",
            "#text": "\nValidate CRUD permission before SOQL/DML operation\n"
        },
        "#tail": "\n",
        "#text": "\n"
        }],
        "#text": "\n"
    }
}

1 ответ

Для разбора json I. PHP вы должны использовать json_decode.

$content =file_get_contents("http://example.com/ex.json");
$jsonContent = json_decode($content,true)

$ jsonContent содержит ваши данные json в массив благодаря вторым параметрам.

Это быстрый пример того, как проверить, не является ли содержимое пустым и есть ли ошибка json.

Надеюсь это поможет

РЕДАКТИРОВАТЬ Извините, я был на моем телефоне..

Другие вопросы по тегам