在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