相关疑难解决方法(0)

如何让XStream很好地输出Scala列表?我可以写自定义转换器吗?

这段代码:

println(new XStream.toXML(List(1,2,3)))
Run Code Online (Sandbox Code Playgroud)

生成这个XML:

<scala.coloncolon serialization="custom">
  <unserializable-parents/>
  <scala.coloncolon>
    <int>1</int>
    <int>2</int>
    <int>3</int>
    <scala.ListSerializeEnd/>
  </scala.coloncolon>
</scala.coloncolon>
Run Code Online (Sandbox Code Playgroud)

相反,我想这样:

<list>
  <int>1</int>
  <int>2</int>
  <int>3</int>
</list>
Run Code Online (Sandbox Code Playgroud)

这类似于通用java集合的序列化方式.什么是最好的方法呢?

通过实现我自己的转换器,我已经完成了大部分工作,但是我坚持使用unmarshal方法,它不清楚如何实例化一个空列表...

class ListConverter( _mapper : Mapper )  extends AbstractCollectionConverter(_mapper) {
  /** Helper method to use x.getClass
   * 
   * See: http://scalide.blogspot.com/2009/06/getanyclass-tip.html
   */
  def getAnyClass(x: Any) = x.asInstanceOf[AnyRef].getClass

  def canConvert( clazz: Class[_]) = {       
    classOf[::[_]] == clazz
  }

  def marshal( value: Any, writer: HierarchicalStreamWriter, context: MarshallingContext) = {
    val list = value.asInstanceOf[List[_]]
    for ( item <- list ) {      
      writeItem(item, context, …
Run Code Online (Sandbox Code Playgroud)

generics scala list xstream

6
推荐指数
1
解决办法
1750
查看次数

标签 统计

generics ×1

list ×1

scala ×1

xstream ×1