Получить строку из json

Я пытаюсь получить строку URL из некоторого кода json.

Вот код json

    {"files":["www.example1.com"],"previews":["www.example1preview.com"],"meta":{},"userId":"guest","product":{"id":"2335","name":"standard"},"type":"u"}

Глядя на то, что я видел в руководстве по PHP, я пытаюсь получить такие превью.

    <?php
    ob_start();
    include('getjson.php');
    $meta_value_json = ob_get_clean();

    echo $meta_value_json;

    $meta_value_json = json_decode($meta_value_json);
    print $meta_value_json->{'previews'};

    ?>

Однако, похоже, это не выводит значение.

Для начала $meta_value_json->previews будет массивом, а не строкой.

CD001 17.05.2018 16:35
previews - это массив, даже если этот пример содержит только один элемент. Кажется, что они ничем не связаны, поэтому вы можете отобразить первый или перебрать его и отобразить все из них. Какой ты хочешь?
iainn 17.05.2018 16:35

Первый - следующий лучший

user3123345 17.05.2018 16:48
Стоит ли изучать 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
3
67
2

Ответы 2

Вам нужно получить значение из вашего декодированного json следующим образом: параметр $ class->. Зная, что превью - это массив, вам также нужно будет выбрать из него определенный элемент для печати (у меня есть первый):

   <?php
    ob_start();
    include('getjson.php');
    $meta_value_json = ob_get_clean();

    echo $meta_value_json;

    $meta_value_json = json_decode($meta_value_json);
    print $meta_value_json->previews[0]; /// get the specific value

    ?>

Это объект, вам не нужно обращаться к нему как к массиву.

CD001 17.05.2018 16:36

@ CD001 вы можете, если вы декодируете его как массив, забыл отредактировать это

Darius Buhai 17.05.2018 16:38
json_decode($meta_value_json) в JSON, например { ... }, предоставит вам объект stdClass - вы можете получить доступ к любому значению, которое вам нравится, с помощью $var->property точно так же, как вы можете с $var['property'] для ассоциативных массивов ... ваш код ничего не исправляет. Конкретный атрибут previewsэто массив, вот в чем проблема.
CD001 17.05.2018 16:44

Для меня это белые экраны.

user3123345 17.05.2018 16:50

@ user3123345 посмотри сейчас

Darius Buhai 17.05.2018 16:51

Экспериментируя с командой php -a на терминале, я поместил ваш json в json_decode и смог получить вашу ссылку, просто выполнив:

print $meta_value_json->previews[0];

Единственная причина использовать print $ meta_value_json -> {'previews'}; по крайней мере, согласно документации php, если вы хотите, чтобы объект был выходным, а ключ, пытающийся получить, является числовым или имеет тип, который не поддерживается php.

Если немного поэкспериментировать, причина того, что print $ meta_value_json -> {'previews'}; Ошибка связана с тем, что print ожидает строку, в нашем случае превью - это массив. Поэтому, если вы напечатаете $ meta_value_json -> {'previews'} [0]; он также будет работать, как ожидалось.

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