2013-10-04 5 views
1

Использование листа в среде Eclipse Scala IDE (содержит код и вывод).Классы десериализации классов с Jerkson (вложенные)

Этот простой код дает ClassNotFoundException. По какой-то причине он не может найти класс Address.

похожи: Deserializing JSON into user-defined case classes with Jerkson (Но их проблема связана с рамками воспроизведения и ошибки синтаксического анализа)

import com.codahale.jerkson.Json._ 

object person { 

    case class Address(city: String, state: String) 
    case class Person(name: String, age: Int, addresses: Seq[Address]) 

    parse[Person]("""{"name":"James", "age":25, "addresses": [{"city":"New York", "state": "NY"}, {"city":"Brooklyn", "state": "NY"}]}""") 
    //> java.lang.ClassNotFoundException: <empty>.person.Address 
    //| at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
    //| at java.security.AccessController.doPrivileged(Native Method) 
    //| at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
    //| at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
    //| at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
    //| at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
    //| at com.codahale.jerkson.util.CaseClassSigParser$.loadClass(CaseClassSigP 
    //| arser.scala:186) 
    //| at com.codahale.jerkson.util.CaseClassSigParser$.typeRef2JavaType(CaseCl 
    //| assSigParser.scala:143) 
    //| at com.codahale.jerkson.util.CaseClassSigParser$$anonfun$typeRef2JavaTyp 
    //| e$1.apply(CaseClassSigParser.scala:146) 
    //| at com.codahale.jerkson.util.CaseClassSigParser$$anonfun$typeRef2JavaTyp 
    //| e$1.apply(CaseClassSigParser.scala:146) 
    //| at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike 
    //| .scala:233) 
    //| 
    //| Output exceeds cutoff limit. 

} 
+0

Имея ту же проблему прямо сейчас, не желайте переключаться на подъемник. – Wrench

ответ

0

Я сделал это работать, используя подъемную JSon банку вместо. См. extracting values в документах lift-json.

package com.example.json 

import net.liftweb.json._ 

object HelloJson extends App { 

    case class Address(city: String, state: String) 
    case class Person(name: String, addresses: List[Address]) 

    implicit val formats = DefaultFormats 
    val json = parse(""" { "name" : "Billy", "addresses" : [{"city": "New York", "state": "NY"}, {"city": "Washington", "state": "DC"}] } """) 
    println(json.extract[Person]) 
} 
Смежные вопросы