2012-11-13 8 views
7

के साथ उपयोगकर्ता द्वारा परिभाषित केस क्लास में Deserializing I Jerkson का उपयोग कर स्कैला में JSON प्रसंस्करण पर इस उत्कृष्ट tutorial पर आया। विशेष रूप से, मैं जेएसओएन को उपयोगकर्ता परिभाषित केस कक्षाओं में deserializing में रुचि रखते हैं। लेख एक सरल उदाहरणजेरिकॉन जेरिकॉन को जेरिकसन

case class Simple(val foo: String, val bar: List[String], val baz: Map[String,Int]) 

object SimpleExample { 
    def main(args: Array[String]) { 
    import com.codahale.jerkson.Json._ 
    val simpleJson = """{"foo":42, "bar":["a","b","c"], "baz":{"x":1,"y":2}}""" 
    val simpleObject = parse[Simple](simpleJson) 
    println(simpleObject) 
    } 
} 

मैं इसे चलाने यह त्रुटि आई है, मैं प्ले 2.0.1, स्काला 2.9.1-1, Jerkson 0.5.0 पर कर रहा हूँ।

Execution exception [[ParsingException: Unable to find a case accessor 

Google समूह पर this भी मिला लेकिन यह सहायक नहीं है।

कोई विचार?

+1

यह कुछ भी बदलने करता है अगर आप मामले वर्ग क्षेत्रों से अनावश्यक "वैल" घोषणाओं को दूर (वे ' केस कक्षाओं के लिए जरूरी नहीं है)? – romanb

+0

@romanb दुख की बात है, नहीं। – Bob

+0

बेशक आप आरईपीएल पर यह कोशिश नहीं कर रहे हैं? –

उत्तर

5

दुर्भाग्य से मुझे जेर्कसन नहीं पता, लेकिन स्प्रे-जेसन इस प्रकार की सामग्री को आसान बनाता है। नीचे दिए गए उदाहरण Spray-Json readme से है:

case class Color(name: String, red: Int, green: Int, blue: Int) 

object MyJsonProtocol extends DefaultJsonProtocol { 
    implicit val colorFormat = jsonFormat4(Color) 
} 

import MyJsonProtocol._ 

val json = Color("CadetBlue", 95, 158, 160).toJson 
val color = json.convertTo[Color] 

यहाँ someone's git repository से एक अलग उदाहरण है:

package cc.spray.json.example 

import cc.spray.json._ 


object EnumSex extends Enumeration { 
    type Sex = Value 
    val MALE = Value("MALE") 
    val FEMALE = Value("FEMALE") 
} 

case class Address(no: String, street: String, city: String) 

case class Person(name: String, age: Int, sex: EnumSex.Sex, address: Address) 

object SprayJsonExamples { 
    def main(args: Array[String]) { 
    val json = """{ "no": "A1", "street" : "Main Street", "city" : "Colombo" }""" 
    val address = JsonParser(json).fromJson[Address] 
    println(address) 

    val json2 = """{ "name" : "John", "age" : 26, "sex" : 0 , "address" : { "no": "A1", "street" : "Main Street", "city" : "Colombo" }}""" 

    val person = JsonParser(json2).fromJson[Person] 
    println(person) 
    } 
} 
+0

अच्छा, मैं भविष्य में ऐप्स के लिए इसे देख लूंगा लेकिन दुर्भाग्यवश, मुझे जेर्कसन का उपयोग करने की आवश्यकता है। – Bob

+0

कूल, जेरिकसन के साथ आपकी मदद करने में सक्षम नहीं होने के लिए क्षमा करें। – Jack