我想从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")
}
**之间的代码以另一种语言(冷融合)工作。我想在斯卡拉做同样的事情。
任何帮助将不胜感激。谢谢
答案 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(或任何方法/类)内部,而必须在对象中。