【问题标题】:Parse a JSON FILE in Scala(2.10.1) using Play使用 Play 在 Scala(2.10.1) 中解析 JSON 文件
【发布时间】:2023-03-16 18:48:02
【问题描述】:

我是 scala 的新手,我在这里要做的就是使用 scala 简单地解析一个 JSON 文件并打印出来。我在编译时遇到了我无法解决的错误。提前感谢您对此的任何帮助。 PFB scala 代码、SBT 文件、JSON 文件和错误:

json_example.scala

import scala.io.Source
import play.api.libs.json._
import play.api.libs.json._


object Test extends App  {


val line :String = "Foo";

val filename = "users.json"
for (line <- Source.fromFile(filename).getLines().mkString) {
println(line);
val json: JsValue = Json.parse(line);

 }
 }

JSON 文件 (users.json)

{"users":[
    {"ID":"1","firstName":"John", "lastName":"Doe"},
    {"ID":"2","firstName":"Anna", "lastName":"Smith"},
    {"ID":"3","firstName":"Peter", "lastName":"Jones"}
    {"ID":"1","firstName":"Stewie", "lastName":"Doe"},
    {"ID":"2","firstName":"Chris", "lastName":"Smith"},
    {"ID":"3","firstName":"Louis", "lastName":"Jones"}
    {"ID":"2","firstName":"Brian", "lastName":"Smith"},
    {"ID":"3","firstName":"Meg", "lastName":"Jones"}

]}

SBT 文件 (simple.sbt)

lazy val root = (project in file(".")).

settings(
name := "JSON_GRAPHX",
version := "1.0",
scalaVersion := "2.10.1",

libraryDependencies ++= Seq("com.github.scala-incubator.io" %% "scala-io-file" % "0.4.2",
                       "com.typesafe.play" %% "play-json" % "2.3.4"),

                      resolvers += "Typesafe Repo" at "http://repo.typesafe.com/typesafe/releases/"


)

错误

[info] Set current project to JSON_GRAPHX (in build file:/F:/Graphx_app/JSON_GRAPHX/)
[info] Compiling 1 Scala source to F:\Graphx_app\JSON_GRAPHX\target\scala-2.10\classes...
[error] F:\Graphx_app\JSON_GRAPHX\json_example.scala:15: overloaded method value parse with alternatives:
[error]   (input: Array[Byte])play.api.libs.json.JsValue <and>
[error]   (input: String)play.api.libs.json.JsValue
[error]  cannot be applied to (Char)
[error]  val json: JsValue = Json.parse(line);
[error]                           ^
[error] one error found
[error] (compile:compileIncremental) Compilation failed
[error] Total time: 4 s, completed Aug 18, 2016 8:51:22 PM

【问题讨论】:

    标签: json scala parsing sbt


    【解决方案1】:

    要构建JSON对象,可以直接在mkString返回的String中调用parse方法。比如:

    val json = Json.parse(Source.fromFile(filename).getLines().mkString)
    

    通过做:

    for (line <- Source.fromFile(filename).getLines().mkString)
    

    您实际上是在遍历 Json 字符串的所有字符 - 这就是为什么您会收到 parse 方法无法应用于 Char 的错误。

    获得 JSON 对象后,您可以将其缩小打印:

    println(Json.stringify(json))
    

    或者您可以以可读的格式打印:

    println(Json.prettyPrint(son))
    

    【讨论】:

    • 这是一个完美的解决方案。想知道为什么这不被接受
    • 成功了。非常感谢@virsox 的帮助。抱歉延迟回复。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-13
    • 2019-05-20
    • 1970-01-01
    • 2020-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多