1
我想要生成一些使用json4s库的json,它使用基于嵌套元组结构的dsl构建json。我有我想要斯卡拉Seq
能够转换成一个元组的嵌套像这样:来自序列的斯卡拉动态元组类型构造
// scala Seq
val s = Seq("a", "b", "c", "d")
val rootItem = "id" -> 1234
// desired json
{
"a" : {
"b" : {
"c" : {
"d" : {
"id" : 1234
}
}
}
}
}
如果我强迫它忽略类型我能产生期望的元组结构如下:
// yields ("a", ("b", ("c", ("d", ("id", 1234)))))
s.foldRight[Any](rootItem)(_ -> _)
但由于结果的类型现在表示为Any
将此写入json的隐式转换不会触发(并且在显式调用时引发异常),尽管实际类型是正确的。我对如何以类型安全的方式构建这个数据结构感到不知所措。理想情况下,我想要一个能够适当地建立类型的解决方案,但我知道这可能是不可能的,因为它只需要运行时提供的信息(列表的长度)。我知道scala支持递归类型,似乎可能适合账单,但在这种情况下我无法理解如何使用它们,也不知道它们对于“真实”系统是否安全。
美丽,这正是我想要的,比我想象的要简单得多。 –