Данные php xml для кодирования json в определенном формате

Это мой код php-файла, в котором я получаю данные из катапи. мне нужен был конкретный формат для datatable

$xml=file_get_contents('https://thecatapi.com/api/images/get?format=xml&results_per_page=3');
 $xml = new SimpleXMLElement($xml);

 $datas=array();

$datas['rows'] = $xml->data->images;

echo json_encode($datas, true);

Выход:

{"total":50,
 "rows":{"image":[
            {"url":"https://thecatapi.com/api/images/get.php?id=e0i",
            "id":"e0i",
            "source_url":"http://thecatapi.com/?id=e0i"
            },
            {"url":"https://thecatapi.com/api/images/get.php?id=MTYwNDE0MQ",
            "id":"MTYwNDE0MQ",
            "source_url":"http://thecatapi.com/?id=MTYwNDE0MQ"
            },{
            "url":"https://thecatapi.com/api/images/get.php?id=bon",
            "id":"bon",
            "source_url":"http://thecatapi.com/?id=bon"
            }
            ]
        }
}

но я хотел в этой форме json

{
  "total": 800,
  "rows": [
    {
      "url": 0,
      "id": "Item 0",
      "source_url": "$0"
    },
    {
      "url": 0,
      "id": "Item 0",
      "source_url": "$0"
    },
    {
      "url": 0,
      "id": "Item 0",
      "source_url": "$0"
    },

Что ты имеешь в виду? Вы хотите просто приукрасить json? если да, просто используйте опцию JSON_PRETTY_PRINT

NobbyNobbs 04.07.2018 14:11

Поскольку ваш требуемый результат не похож на результат, с которого вы начинаете, мы будем изо всех сил стараться здесь помочь.

RiggsFolly 04.07.2018 14:12

Пожалуйста, помните, мы не ясновидящие. Мы можем комментировать только то, что вы нам показываете, если это не имеет смысла, и вы не получите никаких ответов.

RiggsFolly 04.07.2018 14:13

@NobbyNobbs нет, сэр, я не хочу просто приукрашивать его, я весь день пытался отформатировать данные в этом формате, потому что таблица данных начальной загрузки не принимает другой формат, и я не являюсь экспертом в области данных начальной загрузки

Khagesh 04.07.2018 14:13

В вашем примере я хочу вы, кажется, удалили почти все. Вот почему я не понимаю ваш пример того, что вы хотите от этого процесса

RiggsFolly 04.07.2018 14:20

сэр, это json-вывод с этого URL-адреса issues.wenzhixin.net.cn/examples/bootstrap_table/data

Khagesh 04.07.2018 14:21

Это хорошо, что некоторые умные люди просто понижают вопросы новых пользователей, когда они не могут дать ответ, они просто понижают оценку вопроса.

Khagesh 04.07.2018 14:30

здесь много проблем, но для начала второй параметр в json_encode не должен быть логическим, а должен быть параметрами. Скорее попробуйте что-нибудь JSON_PRETTY_PRINT + JSON_UNESCAPED_SLASHES + JSON_UNESCAPED_UNICODE. Кроме того, вы кодируете неправильный элемент.

YvesLeBorg 04.07.2018 14:39
Стоит ли изучать 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 и хотите разрабатывать...
2
8
63
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Просто придумал альтернативное решение. Измените эту строку:

$datas['rows'] = $xml->data->images;

к этому:

$datas['rows'] = $xml->data->images->image;

в противном случае вы все еще можете сделать это

Расшифруйте строку json в объект и измените ее в соответствии с вашими потребностями.

$stdClassObject = json_decode($jsonData);

$stdClassObject->rows = $stdClassObject->rows->image;

$newJsonData = json_encode($stdClassObject, JSON_PRETTY_PRINT);

echo '<pre>';
print_r($newJsonData);
echo '</pre>';

Новый вывод:

{
    "total": 50,
    "rows": [
        {
            "url": "https://thecatapi.com/api/images/get.php?id=e0i",
            "id": "e0i",
            "source_url": "http://thecatapi.com/?id=e0i"
        },
        {
            "url": "https://thecatapi.com/api/images/get.php?id=MTYwNDE0MQ",
            "id": "MTYwNDE0MQ",
            "source_url": "http://thecatapi.com/?id=MTYwNDE0MQ"
        },
        {
            "url": "https://thecatapi.com/api/images/get.php?id=bon",
            "id": "bon",
            "source_url": "http://thecatapi.com/?id=bon"
        }
    ]
}

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