Cool, thanks Joni. I'll give it a try. On Thu, Oct 1, 2009 at 2:36 AM, Joni Freeman <[email protected]> wrote:
> > Hi, > > I pasted this to scala console and it worked. I am pretty sure that > the problem is that your case classes are inner classes. Inner classes > get one extra implicit constructor parameter, a reference to the outer > class (same way as in Java). You need to move those case classes away > from enclosing class (to an object or package etc.). > > The error message is very bad in this case. I will fix it. > > Cheers Joni > > On Oct 1, 7:49 am, Lincoln <[email protected]> wrote: > > Hi, I've been playing around with lift-json and I keep running into basic > > problems. I'm hoping someone can point out my mistake. > > I'm using "net.liftweb" % "lift-json" % "1.1-M5" > > > > Here's the code I'm trying to run: > > > > implicit val formats = net.liftweb.json.DefaultFormats > > case class Name(first: String, last: String) > > case class User(name: Name, email: String) > > import net.liftweb.json.JsonParser._ > > val u = { > > import JsonDSL._ > > ("name" -> > > ("first" -> "Lincoln") ~ > > ("last" -> "Hochberg") > > ) ~ > > ("email" -> "[email protected]")} > > > > val json = JsonDSL.pretty(JsonAST.render(u)) > > val jsonAST = JsonParser.parse(json) > > val user = jsonAST.extract[User] > > > > This blows up with the following exception: > > > > net.liftweb.json.MappingException: Parsed JSON values do not match with > > class constructor > > args= > > arg types= > > constructor=public > > pkg.TestSpec$$anonfun$1$$anonfun$apply$1(pkg.TestSpec$$anonfun$1) > > at > > > net.liftweb.json.Extraction$.net$liftweb$json$Extraction$$fail(Extraction.scala:151) > > at net.liftweb.json.Extraction$.newInstance$1(Extraction.scala:72) > > 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$$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.ops.TestSpec$$anonfun$1$$anonfun$apply$1.apply(TestSpec.scala:48) > > at > > > com.hotpotato.core.ops.TestSpec$$anonfun$1$$anonfun$apply$1.apply(TestSpec.scala:14) > > 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) > > > > Any ideas? > > > > Thanks, > > Lincoln > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Lift" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~----------~----~----~----~------~----~------~--~---
