[Lift] Re: Parcing Json
Well here is the latest iteration of the code: http://paste.pocoo.org/show/165511/ but I'm getting this error Compiling 11 source files to C:\Users\Randin\Documents\Development \weather\target\classes at 1263504637934 [ERROR]weather/snippet/HelloWorld.scala:32: error: value save is not a member of object HelloWorld.this.Observe Observation.save ^ [ERROR]one error found I went to 2.0-M1 and did a clean install. I assume save might be the answer, how close am I? On Jan 4, 1:00 am, Joni Freeman freeman.j...@gmail.com wrote: 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 freeman.j...@gmail.com 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 rand...@gmail.com 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 = spanWelcome 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 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.
Re: [Lift] Re: Parcing Json
On Thu, Jan 14, 2010 at 1:37 PM, Randinn rand...@gmail.com wrote: Well here is the latest iteration of the code: http://paste.pocoo.org/show/165511/ but I'm getting this error Compiling 11 source files to C:\Users\Randin\Documents\Development \weather\target\classes at 1263504637934 [ERROR]weather/snippet/HelloWorld.scala:32: error: value save is not a member of object HelloWorld.this.Observe Observation.save The Observation method is returning an instance of the Observe case class. This class has no save method on it, thus the error. ^ [ERROR]one error found I went to 2.0-M1 and did a clean install. I assume save might be the answer, how close am I? On Jan 4, 1:00 am, Joni Freeman freeman.j...@gmail.com wrote: 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 freeman.j...@gmail.com 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 rand...@gmail.com 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 = spanWelcome 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 lift...@googlegroups.com. To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.comliftweb%2bunsubscr...@googlegroups.com . For more options, visit this group at http://groups.google.com/group/liftweb?hl=en. -- Lift, the simply functional web framework http://liftweb.net Beginning Scala http://www.apress.com/book/view/1430219890 Follow me: http://twitter.com/dpp Surf the harmonics -- You received this message because you are subscribed to the Google Groups "Lift" group. To post to this group,
Re: [Lift] Re: Parcing Json
Isn't it that the val Observation is being assigned to the (compiler synthesized) Observe singleton object? In either case, no save method. -Ross On Jan 14, 2010, at 4:41 PM, David Pollak wrote: On Thu, Jan 14, 2010 at 1:37 PM, Randinn rand...@gmail.com wrote: Well here is the latest iteration of the code: http://paste.pocoo.org/show/165511/ but I'm getting this error Compiling 11 source files to C:\Users\Randin\Documents\Development \weather\target\classes at 1263504637934 [ERROR]weather/snippet/HelloWorld.scala:32: error: value save is not a member of object HelloWorld.this.Observe Observation.save The Observation method is returning an instance of the Observe case class. This class has no save method on it, thus the error. ^ [ERROR]one error found I went to 2.0-M1 and did a clean install. I assume save might be the answer, how close am I? On Jan 4, 1:00 am, Joni Freeman freeman.j...@gmail.com wrote: 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 freeman.j...@gmail.com 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 rand...@gmail.com 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 = spanWelcome 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 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. -- Lift, the simply functional web framework http://liftweb.net Beginning Scala
[Lift] Re: Parcing Json
Thank you both for your explanations it seems assigning val Observation to Observe is a bad idea, what should I do to get the parced information to the Observation map? On Jan 15, 8:42 am, Ross Mellgren dri...@gmail.com wrote: Isn't it that the val Observation is being assigned to the (compiler synthesized) Observe singleton object? In either case, no save method. -Ross On Jan 14, 2010, at 4:41 PM, David Pollak wrote: On Thu, Jan 14, 2010 at 1:37 PM, Randinn rand...@gmail.com wrote: Well here is the latest iteration of the code: http://paste.pocoo.org/show/165511/ but I'm getting this error Compiling 11 source files to C:\Users\Randin\Documents\Development \weather\target\classes at 1263504637934 [ERROR]weather/snippet/HelloWorld.scala:32: error: value save is not a member of object HelloWorld.this.Observe Observation.save The Observation method is returning an instance of the Observe case class. This class has no save method on it, thus the error. ^ [ERROR]one error found I went to 2.0-M1 and did a clean install. I assume save might be the answer, how close am I? On Jan 4, 1:00 am, Joni Freeman freeman.j...@gmail.com wrote: 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 freeman.j...@gmail.com 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 rand...@gmail.com 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 = spanWelcome 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 lift...@googlegroups.com. To
[Lift] Re: Parcing Json
http://paste.pocoo.org/show/165532/ On Jan 15, 9:29 am, David Pollak feeder.of.the.be...@gmail.com wrote: On Thu, Jan 14, 2010 at 2:26 PM, Randinn rand...@gmail.com wrote: Thank you both for your explanations it seems assigning val Observation to Observe is a bad idea, what should I do to get the parced information to the Observation map? What does your Observation class look like? On Jan 15, 8:42 am, Ross Mellgren dri...@gmail.com wrote: Isn't it that the val Observation is being assigned to the (compiler synthesized) Observe singleton object? In either case, no save method. -Ross On Jan 14, 2010, at 4:41 PM, David Pollak wrote: On Thu, Jan 14, 2010 at 1:37 PM, Randinn rand...@gmail.com wrote: Well here is the latest iteration of the code: http://paste.pocoo.org/show/165511/ but I'm getting this error Compiling 11 source files to C:\Users\Randin\Documents\Development \weather\target\classes at 1263504637934 [ERROR]weather/snippet/HelloWorld.scala:32: error: value save is not a member of object HelloWorld.this.Observe Observation.save The Observation method is returning an instance of the Observe case class. This class has no save method on it, thus the error. ^ [ERROR]one error found I went to 2.0-M1 and did a clean install. I assume save might be the answer, how close am I? On Jan 4, 1:00 am, Joni Freeman freeman.j...@gmail.com wrote: 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 freeman.j...@gmail.com 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 rand...@gmail.com 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 = spanWelcome 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,
Re: [Lift] Re: Parcing Json
On Thu, Jan 14, 2010 at 2:37 PM, Randinn rand...@gmail.com wrote: http://paste.pocoo.org/show/165532/ You have to write code that will copy each of the fields from the case class to the mapper object. On Jan 15, 9:29 am, David Pollak feeder.of.the.be...@gmail.com wrote: On Thu, Jan 14, 2010 at 2:26 PM, Randinn rand...@gmail.com wrote: Thank you both for your explanations it seems assigning val Observation to Observe is a bad idea, what should I do to get the parced information to the Observation map? What does your Observation class look like? On Jan 15, 8:42 am, Ross Mellgren dri...@gmail.com wrote: Isn't it that the val Observation is being assigned to the (compiler synthesized) Observe singleton object? In either case, no save method. -Ross On Jan 14, 2010, at 4:41 PM, David Pollak wrote: On Thu, Jan 14, 2010 at 1:37 PM, Randinn rand...@gmail.com wrote: Well here is the latest iteration of the code: http://paste.pocoo.org/show/165511/ but I'm getting this error Compiling 11 source files to C:\Users\Randin\Documents\Development \weather\target\classes at 1263504637934 [ERROR]weather/snippet/HelloWorld.scala:32: error: value save is not a member of object HelloWorld.this.Observe Observation.save The Observation method is returning an instance of the Observe case class. This class has no save method on it, thus the error. ^ [ERROR]one error found I went to 2.0-M1 and did a clean install. I assume save might be the answer, how close am I? On Jan 4, 1:00 am, Joni Freeman freeman.j...@gmail.com wrote: 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 freeman.j...@gmail.com 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 rand...@gmail.com 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 = spanWelcome 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,
[Lift] Re: Parcing Json
Ah, I didn't know I was missing that. Right, I'll go back to chapter 6 in the book and see how to accomplish that, thank you for the info. On Jan 15, 9:43 am, David Pollak feeder.of.the.be...@gmail.com wrote: On Thu, Jan 14, 2010 at 2:37 PM, Randinn rand...@gmail.com wrote: http://paste.pocoo.org/show/165532/ You have to write code that will copy each of the fields from the case class to the mapper object. On Jan 15, 9:29 am, David Pollak feeder.of.the.be...@gmail.com wrote: On Thu, Jan 14, 2010 at 2:26 PM, Randinn rand...@gmail.com wrote: Thank you both for your explanations it seems assigning val Observation to Observe is a bad idea, what should I do to get the parced information to the Observation map? What does your Observation class look like? On Jan 15, 8:42 am, Ross Mellgren dri...@gmail.com wrote: Isn't it that the val Observation is being assigned to the (compiler synthesized) Observe singleton object? In either case, no save method. -Ross On Jan 14, 2010, at 4:41 PM, David Pollak wrote: On Thu, Jan 14, 2010 at 1:37 PM, Randinn rand...@gmail.com wrote: Well here is the latest iteration of the code: http://paste.pocoo.org/show/165511/ but I'm getting this error Compiling 11 source files to C:\Users\Randin\Documents\Development \weather\target\classes at 1263504637934 [ERROR]weather/snippet/HelloWorld.scala:32: error: value save is not a member of object HelloWorld.this.Observe Observation.save The Observation method is returning an instance of the Observe case class. This class has no save method on it, thus the error. ^ [ERROR]one error found I went to 2.0-M1 and did a clean install. I assume save might be the answer, how close am I? On Jan 4, 1:00 am, Joni Freeman freeman.j...@gmail.com wrote: 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 freeman.j...@gmail.com 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 rand...@gmail.com 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 = spanWelcome 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
[Lift] Re: Parcing Json
I assume I use the save method but am stumbling on implementing it... On Jan 11, 5:49 pm, Joni Freeman freeman.j...@gmail.com wrote: Hi, I'm sorry but I'm not totally sure what you are trying to accomplish. What would be the key in that map and what would be its values? Cheers Joni On 11 tammi, 03:14, Randinn rand...@gmail.com wrote: I should explain what we are planning, the idea is to get the json file into a string, parse it and save the caught information into a Observation map. On Jan 11, 11:23 am, Randinn rand...@gmail.com wrote: Forgive my ignorance but I was wondering why (json \ observations).extract[Observation], is it to save as a flat file? On Jan 4, 7:13 am, Randinn rand...@gmail.com wrote: I tried some of the changes you made but not all of them, and (json\ observations).extract[Observation], I had no idea about that one. Thank you very much for your help, it is appreciated. On Jan 4, 1:00 am, Joni Freeman freeman.j...@gmail.com wrote: 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 freeman.j...@gmail.com wrote: Hi, That's almost correct. I did following changes after looking intoJSON content. 1. 'notice' and 'header' areJSONarrays just like 'data'. Therefore: case class Observation(notice: List[Notice], header: List[Header], data: List[Data]) 2. There's optional data inJSON(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 inJSONfield '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 rand...@gmail.com wrote: I'm having a bit of trouble with LiftJsonparcing, 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 = spanWelcome 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) valjson= 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
[Lift] Re: Parcing Json
Ok, thanks for clarification. Unfortunately my knowledge about mapper is very limited (I've previously used ScalaQuery for db persistence). Maybe someone else can answer the question better, the question being: What is the easiest way to store instances of Observations into database using mapper. case class Observation(notice: List[Notice], header: List[Header], data: List[Data]) Notice, Header and Data are simple case classes having just primitive fields. Cheers Joni On 11 tammi, 10:36, Randinn rand...@gmail.com wrote: Sorry for the confusion Observation is a table actually, I meant to write mapper. So what we're doing is calling up the json file, making it a string, putting it through the parcer and inserting it into the table. On Jan 11, 5:49 pm, Joni Freeman freeman.j...@gmail.com wrote: Hi, I'm sorry but I'm not totally sure what you are trying to accomplish. What would be the key in that map and what would be its values? Cheers Joni On 11 tammi, 03:14, Randinn rand...@gmail.com wrote: I should explain what we are planning, the idea is to get the json file into a string, parse it and save the caught information into a Observation map. On Jan 11, 11:23 am, Randinn rand...@gmail.com wrote: Forgive my ignorance but I was wondering why (json \ observations).extract[Observation], is it to save as a flat file? On Jan 4, 7:13 am, Randinn rand...@gmail.com wrote: I tried some of the changes you made but not all of them, and (json\ observations).extract[Observation], I had no idea about that one. Thank you very much for your help, it is appreciated. On Jan 4, 1:00 am, Joni Freeman freeman.j...@gmail.com wrote: 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 freeman.j...@gmail.com wrote: Hi, That's almost correct. I did following changes after looking intoJSON content. 1. 'notice' and 'header' areJSONarrays just like 'data'. Therefore: case class Observation(notice: List[Notice], header: List[Header], data: List[Data]) 2. There's optional data inJSON(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 inJSONfield '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 rand...@gmail.com wrote: I'm having a bit of trouble with LiftJsonparcing, 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 = spanWelcome 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) valjson= 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,
Re: [Lift] Re: Parcing Json
Hey Joni, What did you think of ScalaQuery btw? Have you used it inside a lift app? Cheers, Tim On 11 Jan 2010, at 11:07, Joni Freeman wrote: Ok, thanks for clarification. Unfortunately my knowledge about mapper is very limited (I've previously used ScalaQuery for db persistence). Maybe someone else can answer the question better, the question being: What is the easiest way to store instances of Observations into database using mapper. case class Observation(notice: List[Notice], header: List[Header], data: List[Data]) Notice, Header and Data are simple case classes having just primitive fields. Cheers Joni On 11 tammi, 10:36, Randinn rand...@gmail.com wrote: Sorry for the confusion Observation is a table actually, I meant to write mapper. So what we're doing is calling up the json file, making it a string, putting it through the parcer and inserting it into the table. On Jan 11, 5:49 pm, Joni Freeman freeman.j...@gmail.com wrote: Hi, I'm sorry but I'm not totally sure what you are trying to accomplish. What would be the key in that map and what would be its values? Cheers Joni On 11 tammi, 03:14, Randinn rand...@gmail.com wrote: I should explain what we are planning, the idea is to get the json file into a string, parse it and save the caught information into a Observation map. On Jan 11, 11:23 am, Randinn rand...@gmail.com wrote: Forgive my ignorance but I was wondering why (json \ observations).extract[Observation], is it to save as a flat file? On Jan 4, 7:13 am, Randinn rand...@gmail.com wrote: I tried some of the changes you made but not all of them, and (json\ observations).extract[Observation], I had no idea about that one. Thank you very much for your help, it is appreciated. On Jan 4, 1:00 am, Joni Freeman freeman.j...@gmail.com wrote: 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 freeman.j...@gmail.com wrote: Hi, That's almost correct. I did following changes after looking intoJSON content. 1. 'notice' and 'header' areJSONarrays just like 'data'. Therefore: case class Observation(notice: List[Notice], header: List[Header], data: List[Data]) 2. There's optional data inJSON(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 inJSONfield '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 rand...@gmail.com wrote: I'm having a bit of trouble with LiftJsonparcing, 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 = spanWelcome 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) valjson= 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:
[Lift] Re: Parcing Json
Tim, ScalaQuery is a great DSL to interface relational database and to construct type safe SQL queries. I find that kind of approach often preferable compared to full blown ORMs (like Hibernate etc.) since it gives full control over SQL queries and does not impose any constraints on object model. At the moment it is a bit difficult to use ScalaQuery with Lift since latest versions of ScalaQuery requires Scala 2.8. But once Lift is fully on 2.8 there should be no problems at all in using it in Lift app. ScalaQuery is still work in progress and there hasn't been any official release as far as I know, the documentation is also severely lacking. Cheers Joni On 11 tammi, 13:32, Timothy Perrett timo...@getintheloop.eu wrote: Hey Joni, What did you think of ScalaQuery btw? Have you used it inside a lift app? Cheers, Tim On 11 Jan 2010, at 11:07, Joni Freeman wrote: Ok, thanks for clarification. Unfortunately my knowledge about mapper is very limited (I've previously used ScalaQuery for db persistence). Maybe someone else can answer the question better, the question being: What is the easiest way to store instances of Observations into database using mapper. case class Observation(notice: List[Notice], header: List[Header], data: List[Data]) Notice, Header and Data are simple case classes having just primitive fields. Cheers Joni On 11 tammi, 10:36, Randinn rand...@gmail.com wrote: Sorry for the confusion Observation is a table actually, I meant to write mapper. So what we're doing is calling up thejsonfile, making it a string, putting it through the parcer and inserting it into the table. On Jan 11, 5:49 pm, Joni Freeman freeman.j...@gmail.com wrote: Hi, I'm sorry but I'm not totally sure what you are trying to accomplish. What would be the key in that map and what would be its values? Cheers Joni On 11 tammi, 03:14, Randinn rand...@gmail.com wrote: I should explain what we are planning, the idea is to get thejson file into a string, parse it and save the caught information into a Observation map. On Jan 11, 11:23 am, Randinn rand...@gmail.com wrote: Forgive my ignorance but I was wondering why (json\ observations).extract[Observation], is it to save as a flat file? On Jan 4, 7:13 am, Randinn rand...@gmail.com wrote: I tried some of the changes you made but not all of them, and (json\ observations).extract[Observation], I had no idea about that one. Thank you very much for your help, it is appreciated. On Jan 4, 1:00 am, Joni Freeman freeman.j...@gmail.com wrote: 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 freeman.j...@gmail.com wrote: Hi, That's almost correct. I did following changes after looking intoJSON content. 1. 'notice' and 'header' areJSONarrays just like 'data'. Therefore: case class Observation(notice: List[Notice], header: List[Header], data: List[Data]) 2. There's optional data inJSON(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 inJSONfield '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 rand...@gmail.com wrote: I'm having a bit of trouble with LiftJsonparcing, 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 = spanWelcome to hello-lift at {new _root_.java.util.Date}/span val http = new Http val bos = new ByteArrayOutputStream val
Re: [Lift] Re: Parcing Json
Yeah i've been watching it for a while; not that there is anything wrong with mapper / jpa, but ScalaQuery appears to be a more functional design and the whole its not an ORM thing that is favoured by quite a number of people makes it very interesting indeed. Cheers, Tim On 11 Jan 2010, at 18:38, Joni Freeman wrote: Tim, ScalaQuery is a great DSL to interface relational database and to construct type safe SQL queries. I find that kind of approach often preferable compared to full blown ORMs (like Hibernate etc.) since it gives full control over SQL queries and does not impose any constraints on object model. At the moment it is a bit difficult to use ScalaQuery with Lift since latest versions of ScalaQuery requires Scala 2.8. But once Lift is fully on 2.8 there should be no problems at all in using it in Lift app. ScalaQuery is still work in progress and there hasn't been any official release as far as I know, the documentation is also severely lacking. Cheers Joni On 11 tammi, 13:32, Timothy Perrett timo...@getintheloop.eu wrote: Hey Joni, What did you think of ScalaQuery btw? Have you used it inside a lift app? Cheers, Tim On 11 Jan 2010, at 11:07, Joni Freeman wrote: Ok, thanks for clarification. Unfortunately my knowledge about mapper is very limited (I've previously used ScalaQuery for db persistence). Maybe someone else can answer the question better, the question being: What is the easiest way to store instances of Observations into database using mapper. case class Observation(notice: List[Notice], header: List[Header], data: List[Data]) Notice, Header and Data are simple case classes having just primitive fields. Cheers Joni On 11 tammi, 10:36, Randinn rand...@gmail.com wrote: Sorry for the confusion Observation is a table actually, I meant to write mapper. So what we're doing is calling up thejsonfile, making it a string, putting it through the parcer and inserting it into the table. On Jan 11, 5:49 pm, Joni Freeman freeman.j...@gmail.com wrote: Hi, I'm sorry but I'm not totally sure what you are trying to accomplish. What would be the key in that map and what would be its values? Cheers Joni On 11 tammi, 03:14, Randinn rand...@gmail.com wrote: I should explain what we are planning, the idea is to get thejson file into a string, parse it and save the caught information into a Observation map. On Jan 11, 11:23 am, Randinn rand...@gmail.com wrote: Forgive my ignorance but I was wondering why (json\ observations).extract[Observation], is it to save as a flat file? On Jan 4, 7:13 am, Randinn rand...@gmail.com wrote: I tried some of the changes you made but not all of them, and (json\ observations).extract[Observation], I had no idea about that one. Thank you very much for your help, it is appreciated. On Jan 4, 1:00 am, Joni Freeman freeman.j...@gmail.com wrote: 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 freeman.j...@gmail.com wrote: Hi, That's almost correct. I did following changes after looking intoJSON content. 1. 'notice' and 'header' areJSONarrays just like 'data'. Therefore: case class Observation(notice: List[Notice], header: List[Header], data: List[Data]) 2. There's optional data inJSON(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 inJSONfield '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 rand...@gmail.com wrote: I'm having a bit of trouble with LiftJsonparcing, I know I'm not doing it correctly but looking at the examples I cannot figure out what, anyway,
[Lift] Re: Parcing Json
Forgive my ignorance but I was wondering why (json \ observations).extract[Observation], is it to save as a flat file? On Jan 4, 7:13 am, Randinn rand...@gmail.com wrote: I tried some of the changes you made but not all of them, and (json\ observations).extract[Observation], I had no idea about that one. Thank you very much for your help, it is appreciated. On Jan 4, 1:00 am, Joni Freeman freeman.j...@gmail.com wrote: 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 freeman.j...@gmail.com wrote: Hi, That's almost correct. I did following changes after looking intoJSON content. 1. 'notice' and 'header' areJSONarrays just like 'data'. Therefore: case class Observation(notice: List[Notice], header: List[Header], data: List[Data]) 2. There's optional data inJSON(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 inJSONfield '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 rand...@gmail.com wrote: I'm having a bit of trouble with LiftJsonparcing, 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 = spanWelcome 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) valjson= 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 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.
[Lift] Re: Parcing Json
I should explain what we are planning, the idea is to get the json file into a string, parse it and save the caught information into a Observation map. On Jan 11, 11:23 am, Randinn rand...@gmail.com wrote: Forgive my ignorance but I was wondering why (json \ observations).extract[Observation], is it to save as a flat file? On Jan 4, 7:13 am, Randinn rand...@gmail.com wrote: I tried some of the changes you made but not all of them, and (json\ observations).extract[Observation], I had no idea about that one. Thank you very much for your help, it is appreciated. On Jan 4, 1:00 am, Joni Freeman freeman.j...@gmail.com wrote: 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 freeman.j...@gmail.com wrote: Hi, That's almost correct. I did following changes after looking intoJSON content. 1. 'notice' and 'header' areJSONarrays just like 'data'. Therefore: case class Observation(notice: List[Notice], header: List[Header], data: List[Data]) 2. There's optional data inJSON(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 inJSONfield '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 rand...@gmail.com wrote: I'm having a bit of trouble with LiftJsonparcing, 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 = spanWelcome 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) valjson= 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 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.
[Lift] Re: Parcing Json
Hi, I'm sorry but I'm not totally sure what you are trying to accomplish. What would be the key in that map and what would be its values? Cheers Joni On 11 tammi, 03:14, Randinn rand...@gmail.com wrote: I should explain what we are planning, the idea is to get the json file into a string, parse it and save the caught information into a Observation map. On Jan 11, 11:23 am, Randinn rand...@gmail.com wrote: Forgive my ignorance but I was wondering why (json \ observations).extract[Observation], is it to save as a flat file? On Jan 4, 7:13 am, Randinn rand...@gmail.com wrote: I tried some of the changes you made but not all of them, and (json\ observations).extract[Observation], I had no idea about that one. Thank you very much for your help, it is appreciated. On Jan 4, 1:00 am, Joni Freeman freeman.j...@gmail.com wrote: 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 freeman.j...@gmail.com wrote: Hi, That's almost correct. I did following changes after looking intoJSON content. 1. 'notice' and 'header' areJSONarrays just like 'data'. Therefore: case class Observation(notice: List[Notice], header: List[Header], data: List[Data]) 2. There's optional data inJSON(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 inJSONfield '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 rand...@gmail.com wrote: I'm having a bit of trouble with LiftJsonparcing, 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 = spanWelcome 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) valjson= 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 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.
[Lift] Re: Parcing Json
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 rand...@gmail.com 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 = spanWelcome 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 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.
[Lift] Re: Parcing Json
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 freeman.j...@gmail.com 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 rand...@gmail.com 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 = spanWelcome 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 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.
[Lift] Re: Parcing Json
I tried some of the changes you made but not all of them, and (json \ observations).extract[Observation], I had no idea about that one. Thank you very much for your help, it is appreciated. On Jan 4, 1:00 am, Joni Freeman freeman.j...@gmail.com wrote: 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 freeman.j...@gmail.com 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 rand...@gmail.com 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 = spanWelcome 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 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.