将嵌套String转换为JSON的最快方法

时间:2014-12-12 08:26:51

标签: json scala

我有一个大文本文件,这个文件的每一行都是一个嵌套的String,与此类似:

{"data":"test","field":"test","listObj":[{"data":"testInner1","field":"testInner1"},{"data":"testInner2","field":"testInner2"}],"obj":{"data":"testInner1","field":"testInner1"}}

您可以看到上面的String实际上具有以下结构,但存储为单行并且不可读:

{ 
  "data" : "test", 
  "field" : "test", 
  "listObj" : [{ 
      "data" : "testInner1", 
      "field" : "testInner1" 
   } , { 
      "data" : "testInner2", 
      "field" : "testInner2"
   }],
   "obj" : { 
      "data" : "testInner1", 
      "field" : "testInner1" 
   }
}

我想将文本文件的每一行转换为Scala中的JSON对象,并且我无法为此文件设计映射器模式,因为每行可能具有不同的结构。

在这种情况下,我使用Play框架中的JSON库创建以下简单代码:

  def main(args: Array[String]) {
        for(line <- Source.fromFile("test.txt").getLines()) {
            val lineStr = line.mkString
            val jsonString = Json.toJson(lineStr)
            val readableString: String = Json.prettyPrint(jsonString)
            println(readableString)
        }
    }

但&#34; readableString&#34;的输出是这样的:

"{\"data\":\"test\",\"field\":\"test\",\"listObj\":[{\"data\":\"testInner1\",\"field\":\"testInner1\"},{\"data\":\"testInner2\",\"field\":\"testInner2\"}],\"obj\":{\"data\":\"testInner1\",\"field\":\"testInner1\"}}"

以下是我的问题:

  1. 以上输出不是我想要的,我期待一个JSON 具有可读结构的对象。有没有办法实现这一目标?

  2. 除了将嵌套的String转换为JSON之外,最快的是什么 将非常大的文本文件转换为JSON对象的方法?哪个库 我应该使用吗?

  3. 提前致谢!

0 个答案:

没有答案