Json 扩展Seq-Trait的case类的序列化

Json 扩展Seq-Trait的case类的序列化,json,scala,json4s,Json,Scala,Json4s,看起来,当我尝试序列化从Seq扩展而来的case类时,它会作为Seq处理,而所有其他字段都会被忽略 序列化只会产生一个标准序列,而没有附加字段。而反序列化失败 有人知道我做错了什么吗 代码: 没有讨论为什么这样的课程是有用的。。。您将如何手动编码这样的对象 在JSON中,可以使用字典和列表,因此不能期望列表具有额外的命名属性 您可以使您的IntSeq类具有列表属性,而不扩展Seq本身(并可能提供自动转换),因此您的JSON可以如下所示: {'length' : 5, 'ints' : [1, 2

看起来,当我尝试序列化从Seq扩展而来的case类时,它会作为Seq处理,而所有其他字段都会被忽略

序列化只会产生一个标准序列,而没有附加字段。而反序列化失败

有人知道我做错了什么吗

代码:


没有讨论为什么这样的课程是有用的。。。您将如何手动编码这样的对象

在JSON中,可以使用字典和列表,因此不能期望列表具有额外的命名属性

您可以使您的
IntSeq
类具有列表属性,而不扩展
Seq
本身(并可能提供自动转换),因此您的JSON可以如下所示:

{'length' : 5, 'ints' : [1, 2, 3, 4, 5]}

在自动构造格式时,JSON4S可能比case类更优先考虑序列。正如@fortran所说,在这里扩展
Seq
似乎有些奇怪,但事实上我自己也曾使用过类似的构造。我不知道JSON4S,所以这里只是一些猜测:(a)也许你可以定义一个超级类型,它有相同的字段,但还没有混合在
Seq
trait中,然后定义该超级类型的格式。(b) 您可以使用
SeqLike
来欺骗JSON4S。(c) 手动格式。(d) 不要混入
Seq
。谢谢你的回答。真正的用法是完全不同的,但简化的示例解决了这个问题:我不想在不放弃像序列一样使用类的情况下丢失我提供的附加信息。是否有任何方法可以在不丢失附加信息的情况下完成序列化。隐式转换也会将附加值转换为ommit。
{'length' : 5, 'ints' : [1, 2, 3, 4, 5]}