从scala中的字段生成一个json结构

时间:2018-08-01 12:23:21

标签: json scala

我想从scala中的几个字段创建一个json字符串。

从文本文件中检索不同的字段:

import scala.io.Source

val source = Source.fromFile("D:/Web/Data/QueueFile/FromCarrier/00001709.status.201808010837422.txt")

val lines = source.getLines()
while (lines.hasNext){
  val newLine = lines.next()
  println(newLine)
  val arrayLine = newLine.split(";").toArray
  val MatchingField = arrayLine(1)
  val TStatus_Code = arrayLine(0)
  val Trace_Date = arrayLine(2)
  println("MatchingField: " + MatchingField + " - TStatus_Code: " + TStatus_Code + " - Trace_Date: " + Trace_Date)
  if(TStatus_Code.nonEmpty && Trace_Date.nonEmpty){
    println("TStatus_Code and Trace_Date exist, we should build the json structure")
    **val MQS.Trace.Trace_Date = Trace_Date
    val MQS.Trace.TStatus_Code = TStatus_Code
    val MQS.MatchingField = MatchingField
    val MQS.Provider_ID = 1
    val MQS.Customer_ID = 989
    val QMessage = SerializeJson(MQS)**
  }
  else
    println("TStatus_Code and/or Trace_Date does not exist, don't generate the json structure")
}

**之间的代码以另一种语言(冷融合)工作。我想在斯卡拉做同样的事情。

任何帮助将不胜感激。谢谢

1 个答案:

答案 0 :(得分:0)

这个问题有两个部分: 1.如何表示数据 2.如何将其序列化为json

对于第一部分,您可以创建一个案例类并用您的数据填充它,例如:

case class MQS(traceDate: String, tStatusCode: String, matchingField: String, providerId: Int, customerId: Int)
val mqs = MQS(Trace_Date, TStatus_Code, MatchingField, 1, 989)

对于第二部分,您可以使用许多json序列化器中的任何一个。一个简单的示例是json4s(http://json4s.org/):

import org.json4s.DefaultFormats
import org.json4s.native.Serialization.write

write(mqs)(DefaultFormats)

编辑

案例类需要在一个对象中定义。以下是一个完整的示例:

导入org.json4s.DefaultFormats 导入org.json4s.native.Serialization.write

object App {
  case class MQS(traceDate: String, tStatusCode: String, matchingField: String, providerId: Int, customerId: Int)
  def main(args: Array[String]): Unit = {
    println("Hello, world!")

    val mqs = MQS("Trace_Date", "TStatus_Code", "MatchingField", 1, 989)
    println(write(mqs)(DefaultFormats))
  }
}

案例类定义不能在函数main(或任何方法/类)内部,而必须在对象中。