Разобрать объект json с пустым именем

Это ответ json, который я получаю. Пожалуйста, помогите разобрать json. Я использовал json_decode, но не знаю, как обращаться с объектом без имени.

   {
        "child": {
            "": {
                "rss": [{
                    "data": "\n \n",
                    "attribs": {
                        "": {
                            "version": "2.0"
                        }
                    },
                    "xml_base": "",
                    "xml_base_explicit": false,
                    "xml_lang": "",
                    "child": {
                        "": {
                            "channel": [{
                                "data": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ",
                                "attribs": [],
                                "xml_base": "",
                                "xml_base_explicit": false,
                                "xml_lang": "",
                                "child": {
                                    "": {
                                        "title": [{
                                            "data": "Data name",
                                            "attribs": [],
                                            "xml_base": "",
                                            "xml_base_explicit": false,
                                            "xml_lang": ""
                                        }]
                                    }

                                }
                            }]
                        }
                    }
                }]
            }
        }
    }

Я пытаюсь получить значение данных внутри заголовка, но я не знаю, как решить объект без имени. Может ли кто-нибудь помочь.

 {
        "child": {
            "": {}}}

вы пробовали код раньше? если да, опубликуйте здесь.

david 04.12.2018 07:14

Были и другие внешние циклы. Я дошел сюда с помощью цикла for, но не знаю, как двигаться дальше. @Дэйвид

Vijay J 04.12.2018 07:16

Откуда ты взял этот json? Было бы легче это исправить.

M. Eriksson 04.12.2018 07:17

Дайте угадаю - это какой-то XML для вывода массива. Если вы придерживаетесь XML, для этого есть всевозможные ресурсы - stackoverflow.com/questions/18906366/…, stackoverflow.com/questions/250679/….

Nigel Ren 04.12.2018 08:07
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
402
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Может быть, это поможет;

<?php
$json='{
        "child": {
            "": {
                "rss": [{
                    "data": "\n \n",
                    "attribs": {
                        "": {
                            "version": "2.0"
                        }
                    },
                    "xml_base": "",
                    "xml_base_explicit": false,
                    "xml_lang": "",
                    "child": {
                        "": {
                            "channel": [{
                                "data": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ",
                                "attribs": [],
                                "xml_base": "",
                                "xml_base_explicit": false,
                                "xml_lang": "",
                                "child": {
                                    "": {
                                        "title": [{
                                            "data": "Data name",
                                            "attribs": [],
                                            "xml_base": "",
                                            "xml_base_explicit": false,
                                            "xml_lang": ""
                                        }]
                                    }

                                }
                            }]
                        }
                    }
                }]
            }
        }
    }';

$json_decoded=json_decode($json,true);
print_r($json_decoded['child']['']);
?>
Ответ принят как подходящий

Есть два способа получить доступ к объекту title, в зависимости от того, декодируете ли вы JSON как объект или как массив. Если вы декодируете как объект, вам нужно использовать нотацию ->{'element'}, чтобы обойти пустые имена (Примечание, этот Только работает в PHP 7.2 и выше):

$json = json_decode($jsonstr);
print_r($json->child->{''}->rss[0]->child->{''}->channel[0]->child->{''}->title);

Вывод:

Array ( 
    [0] => stdClass Object (
         [data] => Data name
         [attribs] => Array ( )
         [xml_base] =>
         [xml_base_explicit] =>
         [xml_lang] => 
    )
)

В качестве массива вам просто нужно использовать пустой индекс (''):

$json = json_decode($jsonstr, true);
print_r($json['child']['']['rss'][0]['child']['']['channel'][0]['child']['']['title']);

Вывод:

Array ( 
    [0] => Array (
        [data] => Data name
        [attribs] => Array ( )
        [xml_base] =>
        [xml_base_explicit] =>
        [xml_lang] =>
    ) 
)

Демо на 3v4l.org

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