【发布时间】:2018-07-22 13:39:49
【问题描述】:
在尝试使用Play Framework 的ScalaJson 到JSON automated mapping 使用case classes 在Scala 中学习JSON-解析时,我遇到了上述错误。 p>
com.fasterxml.jackson.core.JsonParseException: Unexpected character (':' (code 58)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')
at [Source:
"column" : {
"name" : "column_name"
}; line: 2, column: 11]
at com.fasterxml.jackson.core.JsonParser._constructError(scalaPlayJson.sc:1577)
at com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(scalaPlayJson.sc:529)
at com.fasterxml.jackson.core.base.ParserMinimalBase._reportUnexpectedChar(scalaPlayJson.sc:458)
at com.fasterxml.jackson.core.json.ReaderBasedJsonParser._handleOddValue(scalaPlayJson.sc:1620)
at com.fasterxml.jackson.core.json.ReaderBasedJsonParser.nextToken(scalaPlayJson.sc:685)
at play.api.libs.json.jackson.JsValueDeserializer.deserialize(scalaPlayJson.sc:175)
at play.api.libs.json.jackson.JsValueDeserializer.deserialize(scalaPlayJson.sc:124)
at play.api.libs.json.jackson.JsValueDeserializer.deserialize(scalaPlayJson.sc:119)
at com.fasterxml.jackson.databind.ObjectMapper._readValue(scalaPlayJson.sc:3704)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(scalaPlayJson.sc:2001)
at play.api.libs.json.jackson.JacksonJson$.parseJsValue(scalaPlayJson.sc:231)
at play.api.libs.json.StaticBinding$.parseJsValue(scalaPlayJson.sc:12)
at play.api.libs.json.Json$.parse(scalaPlayJson.sc:167)
at #worksheet#.#worksheet#(scalaPlayJson.sc:50)
有问题的输入是 最简单的 JSON 可以想到 [file: column.json]
{
"column": {
"name": "column_name"
}
}
我正在使用以下代码来解析给定的 Json 文件。
case class Column(
tableId: Option[Int] = None,
id: Option[Int] = None,
name: String,
shouldCopy: Option[Boolean] = None,
dataType: Option[String] = None,
defaultValue: Option[String] = None
) {
def showColumnInfo: Unit = println(s"Name = $name")
}
object Column {
implicit val reads = Json.reads[Column]
implicit val writes = Json.writes[Column]
implicit val format = Json.format[Column]
}
Json.parse(Source.fromFile(s"$path/column.json").mkString("")).
asOpt[Column].
getOrElse(Column(name = "Could not read")).
showColumnInfo
我尝试过但没有成功的事情:
- 将
JSON中的键"column"更改为"Column"(大写“C”以匹配case class的名称) - 将上述
JSON提供为String,而不是从文件中读取它
我的问题是:
- 导致错误的原因是什么?
- 在哪里可以找到所有
JsonParseException错误代码及其含义的列表?
框架版本:
-
Scalav2.11.11 -
Play-Jsonv2.6.6 [SBT:"com.typesafe.play" %% "play-json" % "2.6.6"] -
SBTv1.0.3
【问题讨论】:
标签: json scala parsing playframework