0

私はScala/Liftを初めて使用し、次の問題に遭遇しました。

class Tests {
case class JTest(
      thisUrl:String,
      id:Int,
      desc:String,
      results:String,
      isEnabled:Boolean,
      attackerAppliance:String,
      victimAppliance:String,
      lastModified:String)

def displayTest(in: NodeSeq): NodeSeq = {
implicit val formats = DefaultFormats.withHints(
           ShortTypeHints(List(classOf[JTest])))

val content = fromInputStream( url.openStream ).getLines.mkString("\n")

        val json = parse(content)
        val test = json.extract[JTest]
        Helpers.bind("test", in,
          AttrBindParam("thisUrl", test.thisUrl, "href"),
          "id" -> test.id,
          "desc" -> test.desc,
          "results" -> test.results,
          "isEnabled" -> test.isEnabled,
          "attackerAppliance" -> test.attackerAppliance,
          "victimAppliance" -> test.victimAppliance,
          "lastModified" -> test.lastModified)

}
}

次のエラーメッセージが表示されます。

Message: net.liftweb.json.MappingException: Do not know how to deserialize 'JTest'

サンプルJSON:

{"jsonClass":"JTest","thisUrl":"/api/test/1","id":1,"desc":"Vulnerability in Server Service","results":"/api/test/1/results","isEnabled":true,"attackerAppliance":"/api/appliance/2","victimAppliance":"/api/appliance/6","lastModified":"2012-08-08 11:46:29.004"}

私はいくつかのことを試みましたが、それは私がここで立ち往生した継ぎ目です。誰かが私を正しい方向に向けることができますか?ところで。私はscala2.7.7を使用しています!

乾杯、エンツォ

4

1 に答える 1

0

jsonClassJSON入力からヒントを削除すると、解析する必要があります。何かのようなもの:

{"thisUrl":"/api/test/1",
"id":1,
"desc":"Vulnerability in Server Service",
"results":"/api/test/1/results",
"isEnabled":true,
"attackerAppliance":"/‌​api/appliance/2",
"victimAppliance":"/api/appliance/6",
"lastModified":"2012-08-08 11:46:29.004"}

[]それ以外の場合は、次のように入力を追加してみてください。

[{"jsonClass":"JTest",
"thisUrl":"/api/test/1",
"id":1,
"desc":"Vulnerability in Server Service",
"results":"/api/test/1/results",
"isEnabled":true,
"attackerAppliance":"/‌​api/appliance/2",
"victimAppliance":"/api/appliance/6",
"lastModified":"2012-08-08 11:46:29.004"}]

jsonClass属性は現在のアイテムを逆シリアル化するサブタイプを決定するのに役立つため、コレクションを探していると思います。単一の要素で動作させる方法はおそらくありますが、それが何であるかはわかりません。

私がscalaバージョンについて尋ねた理由は、2.7.7は現時点ではかなり古く(2.10が最新です)、新しいバージョンでは物事を見つけるのが少し簡単になるかもしれないからです。

于 2013-03-25T12:59:23.930 に答える