json - 需要在scala中将字符串转换为Json对象
问题描述
我正在尝试使用 JSON Spray 将字符串转换为 JSON。但是我在 scala 中很新,并且在编写代码时遇到了麻烦。我的输入文件是一个字符串,可能包含更多元素。
示例输入字符串
12 rob 133 millan
预期的 JSON 文件如下
[
{
"M": {
"Score": {
"N": "12"
},
"TopicID": {
"S": "rob"
}
}
},
{
"M": {
"Score": {
"N": "133"
},
"TopicID": {
"S": "milan"
}
}
}
任何有关代码方法的建议也会有所帮助。请建议。
解决方案
关于创建 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
}
推荐阅读
- reactjs - React Hook useState 构造函数与 Asyncstorage
- php - 在 WooCommerce 中购买产品后,将相关订单 ID 添加为用户元数据
- android - 获取 gpx 轨道的界限
- windows-server-2012 - 在 windows server 2016 中是否兼容 Visual source safe 2005
- mobile - wso2 安装按钮在移动应用程序管理上不起作用
- python - 如何设置文件缓冲参数?
- javascript - 尝试在 React 中将新元素添加到数组状态时出错
- javascript - 如何在不同的组中匹配 X 个完整的单词?
- xamarin.forms - 框架未采用全高 Xamarin 形式
- reactjs - reactJs中的数组操作