我正在尝试使用JSON Spray将字符串转换为JSON。但是我在scala中是一个新手,编写代码时遇到了麻烦。我的输入文件是一个字符串,可能包含更多元素。
示例输入字符串
12 rob 133 millan
期望的JSON文件在下面
[
{
"M": {
"Score": {
"N": "12"
},
"TopicID": {
"S": "rob"
}
}
},
{
"M": {
"Score": {
"N": "133"
},
"TopicID": {
"S": "milan"
}
}
}
任何有关代码方法的建议也会有所帮助。 请提出建议。
答案 0 :(得分:5)
关于创建json的信息:
首先,您需要定义案例类:
case class SClass(S: string)
case class NClass(N: string)
case class MClass(Score: NClass, TopicID: SClass)
然后:
implicit val mclassFormat = jsonFormat2(MClass)
implicit val nclassFormat = jsonFormat(NClass)
implicit val sclassFormat = jsonFormat(SClass)
// serialize the json (hardcoded values)
val mClass = MClass(NClass(12.toString(), SClass("rob"))
val mClassJsonString = mClass.toJson.prettyPrint
关于解析输入:
val input = "12 rob 13 bla"
val a = input.split(" ").zipWithIndex.collect{case(v,i) if (i % 2 == 0) =>
(v,i)}.map(_._1)
val b = input.split(" ").zipWithIndex.collect{case(v,i) if (i % 2 != 0) =>
(v,i)}.map(_._1)
val result = a.zip(b) // [(12,rob),(13,bla)]
现在您可以像这样遍历结果:
result.foreach{case (x,y) =>
val mClass = MClass(NClass(x.toString(), SClass(y))
val mClassJsonString = mClass.toJson.prettyPrint
}