Я хочу преобразовать ниже объект XML,
val xml = <body>
<para>first</para>
<para>second</para>
<sometag>xyz</sometag>
</body>
в JSON
{"body":{"para":["first","second"],"sometag":"xyz"}}
Я пробовал ниже библиотеки scala,
1.net.liftweb |Лифт-JSON_2.11 |3.3.0
import net.liftweb._
import net.liftweb.json.Xml.XmlNode
import net.liftweb.json.Xml
import net.liftweb.json._
println("JSON STRING" + compactRender(toJson(xml)))
output: {"body": {"para": "first", "para": "second", "sometag": "xyz"}}
2.org.json4s |json4s-xml_2.11 |3.6.5
import org.json4s.Xml.{ toJson, toXml }
import org.json4s._
import org.json4s.JsonDSL._
import org.json4s.native.JsonMethods.{ render, pretty, compact }
println("JSON String:" + compact(render(toJSON(xml))))
output: {"body": {"para": "first", "para": "second", "sometag": "xyz"}}
в обоих случаях я вижу дубликаты ключей (обратите внимание, что пара отображается дважды), что недопустимо в JSON.Скорее, я ожидаю, что если в документе XML виден дублирующий тег XML, преобразователь должен поместить эти значения в массив, как показано ниже
{"body":{"para":["first","second"],"sometag":"xyz"}}