xml в json преобразование scala игровые рамки - PullRequest
0 голосов
/ 27 января 2020

Я пытаюсь преобразовать xml в json, используя scala. У меня проблемы с печатью окончательного результата. Код, который я использовал
образец XML файл

<catalog>
   <product description="Cardigan Sweater" product_image="cardigan.jpg">
      <catalog_item>
                  <item_number>RRX9856</item_number>
         <price>42.50</price>
         <size description="Small">
            <color_swatch image="red_cardigan.jpg">Red</color_swatch>
            <color_swatch image="navy_cardigan.jpg">Navy</color_swatch>
            <color_swatch image="burgundy_cardigan.jpg">Burgundy</color_swatch>
         </size>
         <size description="Medium">
            <color_swatch image="red_cardigan.jpg">Red</color_swatch>
            <color_swatch image="navy_cardigan.jpg">Navy</color_swatch>
            <color_swatch image="burgundy_cardigan.jpg">Burgundy</color_swatch>
            <color_swatch image="black_cardigan.jpg">Black</color_swatch>
         </size>
      </catalog_item>
   </product>
</catalog>
import org.json4s.Xml.toJson

val json =  write(toJson(xmlData))

Json вывод

{
    "catalog": {
        "product": {
            "product_image": "cardigan.jpg",
            "description": "Cardigan Sweater",
            "catalog_item": [
            {
                    "item_number": "RRX9856",
                    "price": "42.50",
                    "size": {
                        "description": "Small",
                        "color_swatch": [
                            {
                                "color_swatch": "Red",
                                "image": "red_cardigan.jpg"
                            },
                            {
                                "color_swatch": "Navy",
                                "image": "navy_cardigan.jpg"
                            }
                        ]
                    },
                    "size": {
                        "description": "Medium",
                        "color_swatch": [
                            {
                                "color_swatch": "Red",
                                "image": "red_cardigan.jpg"
                            },
                            {
                                "color_swatch": "Navy",
                                "image": "navy_cardigan.jpg"
                            }
                        ]
                    }
                }
            ]
        }
    }
}

Наконец, я хочу напечатать вывод JSOn в удобочитаемый формат, поэтому я использовал PlayPi's prettyPrint

import play.api.libs.json.Json

val formatJson = Json.prettyPrint(Json.parse(jsonString))

Теперь окончательные данные уменьшаются, когда я анализирую строку json, используя Play api parser (произведение размера) small "отсутствует)

{
    "catalog": {
        "product": {
            "product_image": "cardigan.jpg",
            "description": "Cardigan Sweater",
            "catalog_item": [
                {
                    "item_number": "RRX9856",
                    "price": "42.50",
                        "size": {
                        "description": "Medium",
                        "color_swatch": [
                            {
                                "color_swatch": "Red",
                                "image": "red_cardigan.jpg"
                            },
                            {
                                "color_swatch": "Navy",
                                "image": "navy_cardigan.jpg"
                            }
                        ]
                    }
                }
            ]
        }
    }
}

Он заменил значение на последний экземпляр,
как этого избежать?
Или строка json, созданная с помощью json4s, не структурирована правильно ? Или для этого нужно создать собственный конвертер xml в json?

json4s версия - 3.7.0-M1 Play Framework версия - 2.8

...