Scala能否实现优美的XStream序列化?

3
我将尝试使用XStream作为一种快速将对象序列化为Xml或JSON以便于发送和反序列化的方法。我希望生成的XML/JSON是简单且清晰易懂的。
看起来它运行良好,我已经添加了一些别名,但现在我遇到了一个问题,这段代码:
println(new XStream.toXML(List(1,2,3)))

生成以下XML:

<scala.coloncolon serialization="custom">
  <unserializable-parents/>
  <scala.coloncolon>
    <int>1</int>
    <int>2</int>
    <int>3</int>
    <scala.ListSerializeEnd/>
  </scala.coloncolon>
</scala.coloncolon>

我认为正在发生的事情是Scala List类拥有自己的定制序列化... 我想知道是否有一种方法可以覆盖它?我更喜欢得到:

<list>
  <int>1</int>
  <int>2</int>
  <int>3</int>
</list>
2个回答

1

"coloncolon"类,或者::,实际上被称为cons,是Scala的List的子类。它用于存储List的实际元素。唯一的其他List子类是单例对象Nil的类,它表示空列表。

这实际上做了一个合理的序列化工作,尽管它存储了子类名称——也许在反序列化时会出现问题。

我想知道它如何序列化Nil


我正在尝试找到一种简单的方法来为Web服务生成XML输出,但是由cons生成的XML似乎不适合这种类型的用途。我相信我可以实现一个转换器,只是我想知道我需要实现多少个转换器 :) - waterlooalex

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接