Уловимая фатальная ошибка: объект класса stdClass не может быть преобразован в строку в строке 7

Я пытаюсь быть прокси, но получаю эту ошибку:

Catchable fatal error: Object of class stdClass could not be converted to string in C:\wamp64\www\float\form.php on line 7

мой form.php

<?php
header("Content-Type: application/json; charset=UTF-8");

$file = file_get_contents("https://lichess.org/api/user/$_POST[name]");
$json = json_decode($file);

echo $json;
?>

мой index.html

<form action = "form" method = "post">
<p>Username <input type = "text" name = "name" /></p>
<p><input type = "submit" /></p>
</form>

Когда я отключу $json = json_decode($file);, я могу получить полный вывод JSON без ошибок.

Почему у вас json_decode результат?

tkausl 11.03.2018 16:25

Запрошенный JSON отправляет мне много значений, я хочу показать только некоторые из них. @tkausl

emirhan 11.03.2018 16:30
$_POST[name] <---- выглядит неправильно, забыли одинарные кавычки вокруг name?
Viney 11.03.2018 16:42

У меня такая же ошибка ..

emirhan 11.03.2018 16:44

используйте кодировку $json = json_encode($json) после декодирования

TigerTV.ru 11.03.2018 17:13

Тогда какой смысл кодировать @ TigerTV.ru

emirhan 12.03.2018 12:08

@ 3mirhan: возвращаемый объект json_decode, возвращаемая строка json_encode. Вы сказали, что вам нужно изменить вывод, изменить объект после декодирования, а затем выполнить вывод.

TigerTV.ru 12.03.2018 12:11
Стоит ли изучать 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
7
561
2

Ответы 2

Вы получили ошибку, потому что объект, возвращаемый функцией json_encode, не имеет функции __toString для представления объекта в виде строки:

Итак, если вы не хотите получать полный вывод https://lichess.org/api/user/$_POST[name] вы должны изменить объект, возвращаемый функцией json_encode, а затем выполнить json_decode, который возвращает строку json.

Также вы можете добавить к объекту __toString на лету (работает только для php> 5.2):

$json = json_decode($file);
$json->__toString = function () { return "a presentation of the object"; };
echo $json

Также вам нужно изменить строку:

$file = file_get_contents("https://lichess.org/api/user/$_POST[name]");

на

$file = file_get_contents('https://lichess.org/api/user/'+$_POST['name']);

Я получил это при кодировании данных XML, где пустые элементы были представлены как {} (объект). Решил эту проблему, заменив {} на "" перед возвратом:

return str_replace(': {}',': ""',json_encode($data, JSON_PRETTY_PRINT));

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