PHP Преобразование XML в Json с некоторыми (дублирующимися) элементами в массив Json

Мой Api (laravel) использует код Json. Теперь я также хочу поддерживать XML. Сообщение XML должно быть преобразовано в Json, чтобы оно вписывалось в существующую структуру. Но я не могу сопоставить XML с желаемым форматом Json.

Пример XML и преобразование в Json:

        $xml = "<?xml version='1.0'?>
<catalog>
<book>
<author>Jan</author>
<title>Xml to Json Array</title>
<pages>
<page>
<nr>1</nr>
<title>Welcome to my book</title>
<pagereviews>
<pagereview>
<name>maikel</name>
<comment>very good</comment>
</pagereview>
<pagereview>
<name>John</name>
<comment>i like this page</comment>
</pagereview>
</pagereviews>
</page>
<page>
<nr>2</nr>
<title>more info</title>
</page>
<page>
<nr>3</nr>
<title>lots of fun</title>
</page>
</pages>
</book>
</catalog>";

$xmlObject = simplexml_load_string($xml);

$jsonString = json_encode($xmlObject);

return $jsonString;

В Json это приводит к:

{
"book": {
"author": "Jan",
"title": "Xml to Json Array",
"pages": {
"page": [
{
"nr": "1",
"title": "Welcome to my book",
"pagereviews": {
"pagereview": [
{
"name": "maikel",
"comment": "very good"},
{
"name": "John",
"comment": "i like this page"}
]
}
},
{
"nr": "2",
"title": "more info"},
{
"nr": "3",
"title": "lots of fun"}
]
}
}

}

Мне это нужно без тегов Page и Pagereview. Как это.

{
"book": {
"author": "Jan",
"title": "Xml to Json Array",
"pages": [
{
"nr": "1",
"title": "Welcome to my book",
"pagereviews": [
{
"name": "maikel",
"comment": "very good"},
{
"name": "John",
"comment": "i like this page"}
]
},
{
"nr": "2",
"title": "more info"},
{
"nr": "3",
"title": "lots of fun"}
]
}
}

0

Решение

Я сделал несколько пакетов, которые интегрируются с Laravel для упрощения XML. Вы можете проверить их здесь:

  • Коллекция Xml — Конвертировать коллекцию в XML
  • Запрос Xml — Преобразуйте входящий XML и объедините его в объект Request
  • Ответ Xml — Конвертировать данные в XML для ответа
  • Xml To Array — Конвертировать XML в массив

Если ваш XML должен отличаться по структуре от JSON, я бы порекомендовал вам изучить Пространственный Фрактальный пакет. Он представит трансформаторы для ваших данных. Затем вы можете условно установить преобразователи, прежде чем использовать мои пакеты, чтобы данные выходили именно так, как вы хотите.

-1

Другие решения

Других решений пока нет …