我对 Argonaut 很陌生(我被迫使用它,因为代码库较旧,使用的是 scalaz 的旧版本,我们无意更新它,因为我们正在从头开始重写这个过时的代码),我'正在尝试找到一种将一些数据转储到 JSON 中的方法。
我有一个名为Magnitude
. 为简单起见,将其定义为:
case class Magnitude(bandname: String)
我想要的是一个接收 aList[Magnitude]
和输出的函数Json
,我可以将它们与其他Json
.
现在,我正在做:
def magnitudeFields(magnitudes: List[Magnitude]): Json =
magnitudes.foldLeft(jEmptyObject) { case (j, m) =>
("bandName" := m.bandname) ->: j
}
然后说我有一个实例化List[Magnitude]
:
val magList = List(Magnitude("R"), Magnitude("J"), Magnitude("_uc"), Magnitude("K"))
当我打电话时magnitudeFields(magList)
:
... previousJsonData ->: ('magnitudes' := magnitudeFields(magList)) ->: nextJsonData ...
我只收到bandName: K
和前面的其他三个条目不是函数输出的 JSON 的一部分:
"magnitudes" : {
"bandName" : "K"
},
而不是我想要的,即:
"magnitudes" : {
"bandName" : "R"
"bandName" : "J"
"bandName" : "_uc"
"bandName" : "K"
},
任何帮助将不胜感激。jEmptyObject
我怀疑我在使用默认值时做错了什么,foldLeft
并且可能需要jArray
在某些时候使用类似的东西(函数返回List[Json]
,但我不确定我应该怎么做。