Google Groups does not shine in formatting code snippets. Here's nicer
version:

http://paste.pocoo.org/show/161578/

Cheers Joni

On 3 tammi, 12:20, Joni Freeman <[email protected]> wrote:
> Hi,
>
> That's almost correct. I did following changes after looking into JSON
> content.
>
> 1. 'notice' and 'header' are JSON arrays just like 'data'. Therefore:
> case class Observation(notice: List[Notice], header: List[Header],
> data: List[Data])
>
> 2. There's optional data in JSON (some datapoints are nulls and Scala
> Int or Double can't take null values). This can be fixed by extracting
> into Option.
>
> 3. The extracted Observation is in JSON field 'observations'.
> Therefore:
> (json \ "observations").extract[Observation]
>
> Your error stack trace suggests that you have an old version of lift-
> json. Please upgrade to M8, there was a critical bug in case class
> extraction in older versions.
>
> Full example which works for me:
>
>   implicit val formats = net.liftweb.json.DefaultFormats
>   case class Notice(copyright: String, copyright_url: String,
> disclaimer_url: String)
>   case class Header(refresh_message: String, ID: String, main_ID:
> String, name: String, state_time_zone: String, time_zone: String,
> product_name: String, state: String)
>   case class Data(sort_order: Int, wmo: Int, history_product: String,
> local_date_time: String,
>                   local_date_time_full: String, air_temp: Option
> [Double], dewpt: Option[Double], apparent_t: Option[Double],
>                   rel_hum: Option[Int], delta_t: Option[Double],
> wind_dir: String, wind_spd_kt: Option[Double], gust_kt: Option
> [Double],
>                   wind_spd_kmh: Option[Double], press: Option[Double],
> rain_trace: String)
>
>   case class Observation(notice: List[Notice], header: List[Header],
> data: List[Data])
>
>   (json \ "observations").extract[Observation]
>
> Cheers Joni
>
> On 3 tammi, 09:17, Randinn <[email protected]> wrote:
>
> > I'm having a bit of trouble with Lift Json parcing, I know I'm not
> > doing it correctly but looking at the examples I cannot figure out
> > what, anyway, here is the code in question..... If someone could point
> > me in the right direction that would be great, thanks in advance.
>
> > class HelloWorld {
> >   def howdy = <span>Welcome to hello-lift at {new
> > _root_.java.util.Date}</span>
> > val http = new Http
> > val bos = new ByteArrayOutputStream
> > val myRequest = new Request("http://www.bom.gov.au/fwo/IDV60901/
> > IDV60901.94868.json")
> > val rawdata = http(myRequest >>> bos)
> > val bs = bos.toString
> > val db = :/("www.bom.gov.au")
>
> > val json = parse(bs)
>
> > implicit val formats = net.liftweb.json.DefaultFormats
> >   case class Notice(copyright: String, copyright_url: String,
> > disclaimer_url: String)
> >   case class Header(refresh_message: String, ID: String, main_ID:
> > String, name: String, state_time_zone: String,
> >                     time_zone: String, product_name: String, state:
> > String)
> >   case class Data(sort_order: Int, wmo: Int, history_product: String,
> > local_date_time: String,
> >                   local_date_time_full: Int, air_temp: Double, dewpt:
> > Double, apparent_t: Double,
> >                   rel_hum: Double, delta_t: Double, wind_dir: Double,
> > wind_spd_kt: Double, gust_kt: Double,
> >                   wind_spd_kmh: Double, press: Double, rain_trace:
> > Double)
> >   case class Observation(notice: Notice, header: Header, data: List
> > [Data])
> > json.extract[Observation]

--

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