Я должен создать вывод JSON с помощью скрипта php. Формат JSON предопределен, поэтому я не могу его изменить. Вот как это должно выглядеть ...

{
"header": "My header",
"pages": [{
    "id": 1,
    "items": [{
        "header": "My first page",
        "text": "This is my first page"
    }, {
        "header": "My second page",
        "text": "This is my second page"
    }]
  }]
}

У меня нет проблем с созданием объекта заголовка или массива элементов. Проблема в том, что я не могу создавать страницы как массив и объект id в нем. Массив страниц будет состоять из большего количества «страниц», но я перечисляю только одну в приведенном ниже фрагменте, поэтому мне нужен массив.

Ближайшее решение, которое я нашел, следующее ..

obj = new stdClass();
$obj->header = "My header";
$obj->pages = array();
$obj->pages["items"][] = array("header" => "My first page", "text" => "This is my first page");
$obj->pages["items"][] = array("header" => "My second page", "text" => "This is my second page");
echo json_encode($obj);

Это приводит к ..

{
"header":"My header",
"pages":{
    "items":[{
        "header":"My first page",
        "text":"This is my first page"
    }, {
        "header":"My second page",
        "text":"This is my second page"
    }]
  }
}

Как видите, здесь не хватает двух частей ..

Во-первых, страницы должны быть массивом, т.е. мне не хватает скобок [и]. Вторая проблема - это отсутствующий объект «id»: 1 в массиве страниц, который я не могу понять, как добавить.

Был бы очень признателен за образец кода, решающий эти две проблемы!

0
user3745171 22 Фев 2016 в 03:52

2 ответа

Лучший ответ

Попробуйте это, просто создайте пустой файл php и вставьте мой код, я протестировал его на соответствие вашему:

<?php
    $items = array();
    $pages = array();
    $items[] = array("header" => "My first page", "text" => "This is my first page");
    $items[] = array("header" => "My second page", "text" => "This is my second page");
    $pages[] = array("id" => 1, "items" => $items);
    $obj = array("header" => "My header", "pages" => $pages);
    echo json_encode($obj);
?>
0
Budianto IP 22 Фев 2016 в 01:19

Это просто, если вы замените все { на [, а : на =>, тогда у вас будет php, представляющий ваш целевой json.

$json = [
    "header" => "My header",
    "pages" => [
        [
            "id" => 1,
            "items" => [
                [
                    "header" => "My first page",
                    "text" => "This is my first page",
                ], [
                    "header" => "My second page",
                    "text" => "This is my second page",
                ],
            ],
        ],
    ],
];
echo json_encode($json);

С этого момента вы можете извлечь и заменить нужные части переменными.

2
Moak 22 Фев 2016 в 01:06