Трудность извлечения данных JSON в виде массива PHP из-за странных имен OBJECT в JSON - PullRequest
0 голосов
/ 14 июня 2019

Я получаю данные из JSON в виде массива PHP. Но я не могу получить его из-за странных названий OBJECT.

например. вот просто пример

[car] => stdClass Object
    (
        [model] => stdClass Object
            (
                [year] => 2018
                [company] => Honda
                [condition] => Good
            )

    )

Теперь я могу получить "условие", например, $ car-> model-> condition;

Но в моем случае JSON выглядит следующим образом

[car] => stdClass Object
    (
        [field_set_key="profile",username="sammy"] => stdClass Object
            (
                [year] => 2018
                [company] => Honda
                [condition] => Good
            )

    )

Я не могу получить значение "условие" из-за этого странного объекта [field_set_key="profile",username="sammy"]

Что мне делать?

$car->[ ?????? ]->condition;

1 Ответ

0 голосов
/ 14 июня 2019

Используя синтаксис {}, вы можете обратиться к этому как

echo $car->{'field_set_key="profile",username="sammy"'}->condition;

Это ужасно, и было бы лучше, если бы люди, производящие эти данные, исправили свой код.

Пример

$car = new stdClass;
$b = new stdClass;

$b->year = 2018;
$b->company = 'Honda';
$b->condition =  'good';

$car->{'field_set_key="profile",username="sammy"'} = $b;

print_r($car) . PHP_EOL;

echo 'The condition of the '
        . $car->{'field_set_key="profile",username="sammy"'}->year . ' '
        . $car->{'field_set_key="profile",username="sammy"'}->company
        . ' is ' . $car->{'field_set_key="profile",username="sammy"'}->condition;

РЕЗУЛЬТАТЫ

stdClass Object
(
    [field_set_key="profile",username="sammy"] => stdClass Object
        (
            [year] => 2018
            [company] => Honda
            [condition] => good
        )
)

The condition of the 2018 Honda is good
...