Я пытаюсь преобразовать 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