【问题标题】:Convert a row-List Cassandra table to a JSON format using scala使用 scala 将行列表 Cassandra 表转换为 JSON 格式
【发布时间】:2018-07-05 06:54:22
【问题描述】:

我想使用 scala 将 Cassandra 表转换为 JSON 格式;这是我用来连接 Cassandra 并显示表格的代码:

val cluster = Cluster.builder().addContactPoint("localhost").build()
val session = cluster.connect("MyKeySpace")
try {

  val a = session.execute("Select* from users") 
  println(a.all()) //Show as a Row-List
  //Sample --> [Row[10, Fri Jan 19 04:05:01 MST 2018, 9217], Row[10, Mon Feb 19 04:05:01 MST 2018, 9217], Row[10, Mon Mar 19 04:05:01 MDT 2018, 9217]]


  /** I have this example for the convertion but do not supports that format **/


  case class Sample (Registro: Int,Fecha: String,Valor: String )
  val agregado = Sample(999,"Wed May 20 15:19:21 MDT 31063531","982556517")
  val json= ("Reg_Num:"->agregado.Registro)~("TimeStamp:"->agregado.Fecha) ~ ("Value:"->agregado.Valor) //This is a List
  val JsonExam = println(compact(render(json)))              
  println ( pretty(render(json)) ) 
}
catch
  {
    case e: Exception => println(s"msg=${e.getMessage}")
  }

基本上,我想从这种格式转换:

[Row[10, Fri Jan 19 04:05:01 MST 2018, 9217], Row[12, Mon Feb 20 04:05:01 MST 2018, 9216], Row[18, Tue Mar 21 04:05:01 MDT 2018, 9215]]

到这里:

{
  "Reg_Num:" : 10,
  "TimeStamp:" : "Fri Jan 19 04:05:01 MST 2018",
  "Value:" : "9217"
},
{
  "Reg_Num:" : 12,
  "TimeStamp:" : "Mon Feb 20 04:05:01 MST 2018",
  "Value:" : "9216"
},
{
  "Reg_Num:" : 18,
  "TimeStamp:" : "Tue Mar 21 04:05:01 MDT 2018",
  "Value:" : "9215"
}

【问题讨论】:

标签: json scala cassandra cassandra-3.0


【解决方案1】:

这取决于您使用的 Json 库。在 Play Json 中,我们创建了“Writes”方法,这些方法接受一个案例类的实例并将其转换为 Json。当这些是隐式的时,编译器将在需要时“自动”执行它。例如:

....
import play.api.libs.json._
case class Sample(Registro: Int, Fecha: String, Valor: String ){
object Sample {
  implicit val SamplenWrites = new Writes[Sample] {
    def writes(sample: Sample):JsValue = Json.obj(
        "reg_rum"-> sample.Registro,
        "timeStamp"-> sample.Fecha,
        "value" -> sample.Valor)
      }
    }
  }

Json.obj("samples" -> Sample(5, "Fri Jan 19", "9200"))

【讨论】:

  • 尽管代码对于任何帖子几乎总是必不可少的,包括解释也是必不可少的。请记住,这不仅是为了纠正问题,而且还要告诉人们他们哪里出错了,以及他们如何才能不再犯错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-27
  • 2013-03-08
  • 2019-12-16
  • 1970-01-01
  • 2016-05-01
  • 2022-01-14
  • 1970-01-01
相关资源
最近更新 更多