#php #json
#php #json
Вопрос:
У меня есть следующий код, который генерирует данные в json php:
<?php
$stmt = $con->prepare("SELECT
id_news,
url,
cover_page,
alt_img,
mini_title,
mini_description,
date_post,
confg_img,
main_cover
FROM news ORDER BY id_news DESC LIMIT 5");
$stmt->execute();
$member = array();
$stmt->bind_result(
$member['id_news_sport'],
$member['url'],
$member['cover_page'],
$member['alt_img'],
$member['mini_title'],
$member['mini_description'],
$member['date_post'],
$member['confg_img'],
$member['main_cover']
);
header('Content-type: application/json; charset=utf-8');
echo '[';
$count = 0;
while ($stmt->fetch()) {
if( $count ) {
echo ',';
}
echo json_encode($member, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT | JSON_FORCE_OBJECT);
$count;
}
echo ']';
?>
Получение следующего результата:
[{
"id_news": 712,
"url": "es/deportes/futbol/ecuador/ligapro/serie-a/712/marcos-caicedo-recuerda-su-paso-en-los-equipos-del-astillero",
"cover_page": "https://i.imgur.com/kg7RBqK.jpg",
"alt_img": "Marcos Caicedo",
"mini_title": "Marcos Caicedo recuerda su paso en los equipos del astillero",
"mini_description": "El jugador de Liga de Quito no olvida su paso por Emelec y Barcelona",
"date_post": "2020-12-18 03:21:57",
"confg_img": null,
"main_cover": "relevant_news"
},{
"id_news": 708,
"url": "es/deportes/futbol/internacional/fichajes/708/el-fichaje-que-pretendia-ldu-para-la-defensa-podria-caerse",
"cover_page": "https://i.imgur.com/MmETkch.png",
"alt_img": "Jugadores de LDU celebrando un gol",
"mini_title": "EL fichaje que pretendu00eda LDU para la defensa podru00eda caerse",
"mini_description": "LDU tiene un competidor por el fichaje del central",
"date_post": "2020-12-16 20:26:51",
"confg_img": null,
"main_cover": "relevant_news"
}]
Но мне нужно иметь возможность получать разрыв строки между скобкой и другим разрывом строки для каждой фигурной скобки, например:
[
{
"userId": 1,
"id": 1,
"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
"body": "quia et suscipitnsuscipit recusandae consequuntur expedita et cumnreprehenderit molestiae ut ut quas totamnnostrum rerum est autem sunt rem eveniet architecto"
},
{
"userId": 10,
"id": 99,
"title": "temporibus sit alias delectus eligendi possimus magni",
"body": "quo deleniti praesentium dicta non quodnaut est molestiasnmolestias et officia quis nihilnitaque dolorem quia"
},
{
"userId": 10,
"id": 100,
"title": "at nam consequatur ea labore ea harum",
"body": "cupiditate quo est a modi nesciunt solutanipsa voluptas error itaque dicta innautem qui minus magnam et distinctio eumnaccusamus ratione error aut"
}
]
Как показано на этом выводе данных json, какие изменения я должен использовать в своем коде PHP JSON, чтобы получить тот же результат.
Ответ №1:
HTML
Если вы, вероятно, будете отображать результирующий JSON для пользователей в веб-браузере, вы можете просто использовать: echo "[<br>";
и echo "<br>]";
для вставки html-строк.
API / REST скрипт
Если результат обрабатывается любым другим приложением, отличным от веб-браузера, используйте:
echo "[ n";
иecho "n ]";
для программ на системах на базе Linux / Unix (включая macOS 10 )echo "[ r";
иecho "r ]";
для программ на macOS версий ниже 9echo "[ rn";
иecho "rn ]";
для программ в системах на базе Windows
Обратная косая черта — это универсальный символ «escape», поэтому, если вы не уверены, на какой платформе вы будете запускать скрипт, или хотите, чтобы результат был универсальным независимо от ОС, используйте формат Windows ‘ r n’, и каждая ОС будет работать по-своему
Ответ №2:
Я не вижу причины, по которой вы это делаете, но это может быть что-то вроде этого, добавив n
(новую строку) и amp;nbsp;amp;nbsp;
(два пробела) за скобками и после запятой
header('Content-type: application/json; charset=utf-8');
echo '['."namp;nbsp;amp;nbsp;"; // <<<< here
$count = 0;
while ($stmt->fetch()) {
if( $count ) {
echo ','."namp;nbsp;amp;nbsp;"; // <<<< and here
}
echo json_encode($member, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT | JSON_FORCE_OBJECT);
$count;
}
echo "n".']'; // <<<< and here
оба n
и amp;nbsp;
должны быть внутри двойного апострофа » »
если пробел не работает, попробуйте с s
header('Content-type: application/json; charset=utf-8');
echo '['."nss"; // <<<< here
$count = 0;
while ($stmt->fetch()) {
if( $count ) {
echo ','."nss"; // <<<< and here
}
echo json_encode($member, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT | JSON_FORCE_OBJECT);
$count;
}
echo "n".']'; // <<<< and here
Комментарии:
1. пробелы не работают, друг, я печатаю следующее:
amp;nbsp;amp;nbsp;{"id_news": 713, ...
2. затем попробуйте добавить
s
вместоamp;nbsp;