Got it. Thanks for the info. I was afraid I was doing something wrong. Thanks, Lincoln
On Sun, Sep 13, 2009 at 9:48 AM, Joni Freeman <freeman.j...@gmail.com>wrote: > > Hi, > > Your example should work if you take the val away from your case > class: > > case class MyName(first:String, last:String) > case class MyUser(id:String, name:MyName, url:String) > > The reflection code currently fails to find the primary constructor of > case class if there's extra fields. This will hopefully be fixed some > day when the reflection story of Scala gets better (using Java > reflection is very awkward). > > Cheers Joni > > On Sep 13, 7:55 am, Lincoln <linxbet...@gmail.com> wrote: > > Sorry, here's the full code I'm using: > > > > case class MyName(first:String, last:String) > > case class MyUser(id:String, name:MyName, url:String) { > > val wtf = "wtf" > > > > } > > > > implicit val formats = net.liftweb.json.DefaultFormats > > val json = > > ("id" -> me.id) ~ > > ("name" -> > > ("first" -> me.name.first) ~ > > ("last" -> me.name.last) > > ) ~ > > ("url" -> me.url) > > val output = JsonDSL.pretty(render(json)) > > val jsonCopy = parse(output) > > val user = jsonCopy.extract[MyUser] > > println("user = "+user) > > > > On Sun, Sep 13, 2009 at 12:07 AM, linxbetter <linxbet...@gmail.com> > wrote: > > > Hello, I saw a post about lift-json on the scala-user list so I > > > decided to check it out. I was particularly interested in the ability > > > to call something along the lines of json.extract[MyClass]. I set up > > > a little test case for this though, and apparently having a val of any > > > sort in my case class causes the below exception. Any thoughts? > > > > > My classes looked like this: > > > case class MyName(first:String, last:String) > > > case class MyUser(id:String, name:MyName, url:String) { > > > val wtf = "wtf" > > > } > > > > > And the output of my test > > > > > [info] lift-json should > > > [info] x do pain-free json conversion on nested objects > > > net.liftweb.json.MappingException: Expected JField but got JNothing, > > > json='JField(name,JObject(List(JField(first,JString(Lincoln)), JField > > > (last,JString(Hochberg)))))', path='wtf' > > > at net.liftweb.json.Extraction$.net$liftweb$json$Extraction$ > > > $fail(Extraction.scala:151) > > > at net.liftweb.json.Extraction$.fieldValue$1(Extraction.scala: > > > 106) > > > at net.liftweb.json.Extraction$.build$1(Extraction.scala:78) > > > at net.liftweb.json.Extraction$$anonfun$1.apply > > > (Extraction.scala:84) > > > at net.liftweb.json.Extraction$$anonfun$1.apply > > > (Extraction.scala:84) > > > at scala.List.flatMap(List.scala:1132) > > > at net.liftweb.json.Extraction$.build$1(Extraction.scala:84) > > > at net.liftweb.json.Extraction$$anonfun$1.apply > > > (Extraction.scala:84) > > > at net.liftweb.json.Extraction$$anonfun$1.apply > > > (Extraction.scala:84) > > > at scala.List.flatMap(List.scala:1132) > > > at net.liftweb.json.Extraction$.build$1(Extraction.scala:84) > > > at net.liftweb.json.Extraction$.extract0(Extraction.scala:109) > > > at net.liftweb.json.Extraction$.extract(Extraction.scala:60) > > > at net.liftweb.json.JsonAST$JValue.extract(Json.scala:109) > > > at com.hotpotato.core.SerializationSpec$$anonfun$1$$anonfun > > > $apply$1.apply(SerializationSpec.scala:87) > > > at com.hotpotato.core.SerializationSpec$$anonfun$1$$anonfun > > > $apply$1.apply(SerializationSpec.scala:69) > > > at org.specs.specification.ExampleExecution$$anonfun$3$$anonfun > > > $apply$1.apply(Example.scala:207) > > > at org.specs.specification.Example.execute(Example.scala:121) > > > at org.specs.specification.ExampleLifeCycle$class.executeTest > > > (ExampleLifeCycle.scala:20) > > > at org.specs.Specification.executeTest(Specification.scala:28) > > > at org.specs.specification.Sus.executeTest(Sus.scala:147) > > > at org.specs.specification.ExampleExecution$$anonfun$3.apply > > > (Example.scala:207) > > > at org.specs.specification.ExampleExecution$$anonfun$3.apply > > > (Example.scala:194) > > > at org.specs.specification.ExampleExecution$$anonfun$2.apply > > > (Example.scala:185) > > > at org.specs.specification.ExampleExecution.execute > > > (Example.scala:227) > > > at org.specs.specification.Example.execute(Example.scala:117) > > > at org.specs.specification.Example.errors(Example.scala:143) > > > at org.specs.specification.Sus$$anonfun$successes$1.apply > > > (Sus.scala:122) > > > at org.specs.specification.Sus$$anonfun$successes$1.apply > > > (Sus.scala:122) > > > at scala.List.filter(List.scala:859) > > > at org.specs.specification.Sus.successes(Sus.scala:122) > > > at org.specs.Specification$$anonfun$successes$1.apply > > > (Specification.scala:84) > > > at org.specs.Specification$$anonfun$successes$1.apply > > > (Specification.scala:84) > > > at scala.List.flatMap(List.scala:1132) > > > at org.specs.Specification.successes(Specification.scala:84) > > > at sbt.impl.SpecsRunner.sbt$impl$SpecsRunner$ > > > $reportSpecification(TestFrameworkImpl.scala:140) > > > at sbt.impl.SpecsRunner.runTest(TestFrameworkImpl.scala:123) > > > at sbt.BasicTestRunner.run(TestFramework.scala:38) > > > at sbt.TestFramework$$anonfun$7$$anonfun$apply$8.runTest$1 > > > (TestFramework.scala:136) > > > at sbt.TestFramework$$anonfun$7$$anonfun$apply$8$$anonfun$apply > > > $9.apply(TestFramework.scala:147) > > > at sbt.TestFramework$$anonfun$7$$anonfun$apply$8$$anonfun$apply > > > $9.apply(TestFramework.scala:147) > > > at sbt.NamedTestTask.run(TestFramework.scala:57) > > > at sbt.ScalaProject$$anonfun$sbt$ScalaProject$$toTask$1.apply > > > (ScalaProject.scala:167) > > > at sbt.ScalaProject$$anonfun$sbt$ScalaProject$$toTask$1.apply > > > (ScalaProject.scala:167) > > > at sbt.TaskManager$Task.invoke(TaskManager.scala:62) > > > at sbt.impl.RunTask.runTask(RunTask.scala:78) > > > at sbt.impl.RunTask.sbt$impl$RunTask$$runIfNotRoot > > > (RunTask.scala:63) > > > at sbt.impl.RunTask$$anonfun$runTasksExceptRoot$3.apply > > > (RunTask.scala:49) > > > at sbt.impl.RunTask$$anonfun$runTasksExceptRoot$3.apply > > > (RunTask.scala:49) > > > at sbt.Distributor$Run$Worker$$anonfun$2.apply > > > (ParallelRunner.scala:130) > > > at sbt.Distributor$Run$Worker$$anonfun$2.apply > > > (ParallelRunner.scala:130) > > > at sbt.Control$.trapUnit(Control.scala:19) > > > at sbt.Distributor$Run$Worker.run(ParallelRunner.scala:130) > > > [error] net.liftweb.json.MappingException: Expected JField but got > > > JNothing, json='JField(name,JObject(List(JField(first,JString > > > (Lincoln)), JField(last,JString(Hochberg)))))', path='wtf' > > > > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Lift" group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~----------~----~----~----~------~----~------~--~---