在Scala中,我有以下的数据结构(Item
名称始终相同Container
内是唯一的):播放的Json写入:Scala的SEQ到JSON对象
case class Container(content: Seq[Item])
case class Item(name: String, elements: Seq[String])
实施例实例:
val container = Container(Seq(
Item("A", Seq("A1", "A2")),
Item("B", Seq("B1", "B2"))
))
我想要做的是定义一个产生以下JSON的Writes[Container]
:
{
"A": ["A1", "A2"],
"B": ["B1", "B2"]
}
I guess一个可能的解决方案可能是将Container(Seq[Item])
转换为Map[String, Seq[String]]
,其中每个键对应于项目的名称和项目元素的值,并让API执行其余的操作(可能会隐式写入映射,阅读JSON时至少是这种情况)。
但是:此方法为每个Container
创建一个新的Map
,除了生成JSON之外没有其他目的。有很多Container
情况下需要被转化为JSON,所以我认为这种做法是相当昂贵的。我还能怎么做?
你关于表演可能是正确的。但是,您的解决方案不仅允许重复名称,而且还保留更好的元素顺序,谢谢! – ceran