Как добавить разрыв строки в скобках и фигурных скобках в файл JSON PHP?

#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 версий ниже 9
  • echo "[ 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;