Thanks guys, Actually my problem is still there, It looks like lift-
json doesn't support scala-arrays.



case class Plan(  leftOperand:Option[Action],
                  operator:Option[String],
                  rightOperand:Option[Action])

case class Game(buy:Map[String,Plan])

case class Action(
        functionName:String,
        symbol:String,
        inParams: Array[Number] ,
        subOperand : Option[Action])

val game = new Game(Map("a"->new Plan(Some(new
Action("f1","s",Array(),None)),Some("A"),Some(new
Action("f1","s",Array(0,1,2),None)))))
implicit val format =
Serialization.formats(ShortTypeHints(List(classOf[Plan],
classOf[Action], classOf[Game])))
println(Serialization.write(game))

The output is:

{"jsonClass":"Game","buy":{"a":{"jsonClass":"Plan","rightOperand":
{"jsonClass":"Action","symbol":"s","functionName":"f1"},"operator":"A","leftOperand":
{"jsonClass":"Action","symbol":"s","functionName":"f1"}}}}

which is not correct (missing the inParams field from the action
class).

I appreciate your comment,

Cheers,
-A
On Feb 11, 8:44 am, Joni Freeman <freeman.j...@gmail.com> wrote:
> Hi,
>
> Type hints should not be needed in this case since the Map is not used
> in a polymorphic way. But the work-around Justin showed should work.
> Actually it seems that it is enough to put type info just to Action to
> make serialization work:
>
>     implicit val format =
> Serialization.formats(ShortTypeHints(List(classOf[Action]))
>
> Anyway, I added a ticket for this 
> defect:http://www.assembla.com/spaces/liftweb/tickets/341-Type-hints-are-nee...
>
> Cheers Joni
>
> On Feb 10, 7:49 pm, Justin Reardon <justin.rear...@gmail.com> wrote:
>
> > Sometimes the serialization code needs a helping hand, using:
>
> >         implicit val format = 
> > Serialization.formats(ShortTypeHints(List(classOf[Plan], classOf[Action], 
> > classOf[Game])))
>
> > instead of the defaults makes it work here.
>
> > Cheers,
> > Justin Reardon
>
> > On 2010-02-10, at 11:42 , Ali wrote:
>
> > > Dear All,
> > > I am wondering would you please tell me how can I use lift-json(2.0
> > > snapshots) to serialize and deserialize the following scala case
> > > classes.
>
> > > case class Plan( plan:Option[Action] )
> > > case class Game( game:Map[String,Plan])
> > > case class Action(id:Int, subAction : Option[Action])
>
> > > val game = new Game(Map("a"->new Plan(new Some(new Action(1,None)))))
> > > implicit val formats = net.liftweb.json.DefaultFormats
>
> > > game must beEqualTo( Serialization.read[Game]
> > > (Serialization.write(game)))
>
> > > Test fails.
>
> > > Cheers,
> > > -A
>
> > > --
> > > You received this message because you are subscribed to the Google Groups 
> > > "Lift" group.
> > > To post to this group, send email to lift...@googlegroups.com.
> > > To unsubscribe from this group, send email to 
> > > liftweb+unsubscr...@googlegroups.com.
> > > For more options, visit this group 
> > > athttp://groups.google.com/group/liftweb?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to lift...@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.

Reply via email to