Ok, this was yet another bug in serialization code. It is now fixed
and should be in next snapshot build. Deserializing null values were
not supported. Note a recommended way is to use Option for optional
values. This would've worked:

case class X(yy: Option[Y])
case class Y(ss: String)

from(to(X(None)))

It makes me a bit sad that both Scala and JSON support null values...

Cheers Joni

On Feb 20, 8:13 am, Ali <[email protected]> wrote:
> Thanks for your reply. Actually I was trying to build an exception I
> am receiving in our product.
>
> case class X(yy:Y)
> case class Y(ss:String)
>
>   def from(in:String):X={
>     implicit val formats = net.liftweb.json.DefaultFormats
>     import net.liftweb.json.JsonAST._
>     import net.liftweb.json.Extraction._
>     import net.liftweb.json.Printer._
>     net.liftweb.json.Serialization.read[X](in)
>   }
>   def to(in:X):String={
>     implicit val formats = net.liftweb.json.DefaultFormats
>     import net.liftweb.json.JsonAST._
>     import net.liftweb.json.Extraction._
>     import net.liftweb.json.Printer._
>     compact(render(decompose(in)))
>   }
>
> val sample = new X(null)
> val sample2=from(to(sample))
>
> and I am getting,
>      net.liftweb.json.MappingException: Did not find value which can
> be converted into java.lang.String
>         at net.liftweb.json.Meta$.fail(Meta.scala:99)
>         at net.liftweb.json.Extraction$.convert(Extraction.scala:280)
>         at net.liftweb.json.Extraction$.build$1(Extraction.scala:216)
>         at net.liftweb.json.Extraction$$anonfun$newInstance
> $1$1.apply(Extraction.scala:199)
>         at net.liftweb.json.Extraction$$anonfun$newInstance
> $1$1.apply(Extraction.scala:199)
>         at scala.List.map(List.scala:812)
>
> I appreciate your comment,
>
> Thanks,
> -A
>
> On Feb 20, 12:10 am, Joni Freeman <[email protected]> wrote:
>
> > Is X perhaps an inner class? Inner class has an implicit reference to
> > outer instance. Serializing those is not supported.
>
> > If so, please move definition of X outside of class.
>
> > Cheers Joni
>
> > On Feb 20, 12:16 am, Ali <[email protected]> wrote:
>
> > > Hi,
> > >  I am wondering, could you please let me know what is wrong in the
> > > following code:
>
> > > case class X(vv:String)
> > > val sample = new X("A")
>
> > >       implicit val formats = net.liftweb.json.DefaultFormats
> > >       import net.liftweb.json.JsonAST._
> > >       import net.liftweb.json.Extraction._
> > >       import net.liftweb.json.Printer._
>
> > >       def from(in:String):X=net.liftweb.json.Serialization.read[X](in)
> > >       def to(in:X):String=compact(render(decompose(in)))
>
> > >       val sample2=from(to(sample))
> > >       sample2 must_== sample
>
> > > I am getting  java.util.NoSuchElementException: key not found: $outer
>
> > > Thanks,
> > > -A
>
>

-- 
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.

Reply via email to