1

次の json 文字列を解析する必要があります。

{「タイプ」: 1}

私が使用しているケースクラスは次のようになります。

case class MyJsonObj(
    val type: Int
)

ただし、「type」はキーワードであるため、これは Scala を混乱させます。そこで、Jacson/Jerkson の @JsonProperty アノテーションを次のように使用してみました。

case class MyJsonObj(
    @JsonProperty("type") val myType: Int
)

ただし、Json パーサーは、json で「myType」ではなく「type」文字列を検索することを依然として拒否しています。次のサンプル コードは、問題を示しています。

import com.codahale.jerkson.Json._
import org.codehaus.jackson.annotate._

case class MyJsonObj(
    @JsonProperty("type") val myType: Int
)

object SimpleExample {
  def main(args: Array[String]) {
    val jsonLine = """{"type":1}"""
    val JsonObj = parse[MyJsonObj](jsonLine)
}

次のエラーが表示されます。

[error] (run-main-a) com.codahale.jerkson.ParsingException: Invalid JSON. Needed [myType], but found [type].

PS: 上記のように、私は jerkson/jackson を使用していますが、他の json 解析ライブラリに切り替えても問題ありません。

4

3 に答える 3

4

逆引用符を使用して、Scala コンパイラが型をキーワードとして解釈しないようにします。

case class MyJsonObj(
    val `type`: Int
)
于 2014-04-17T17:12:43.220 に答える