Сохранение извлечения Json в Lift - PullRequest
0 голосов
/ 24 января 2010

Я пытаюсь сохранить данные, обработанные при извлечении данных Json от Lifts, и сохранить их в базе данных (через маппер), но не могу найти, где соединить сниппит с маппером. Код выглядит следующим образом.

Вот тестовый фрагмент.

package com.testjson.snippet

import dispatch._
import net.liftweb.json.JsonParser._
import java.io.{ByteArrayOutputStream}
import com.testjson.model.Done

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://testing.com/folder/file.json")
val rawdata = http(myRequest >>> bos)
val bs = bos.toString

val json = parse(bs)

implicit val formats = net.liftweb.json.DefaultFormats

case class One(sample1: String, sample2: String, sample3: String)
case class Two(samplea: String, sampleb: String, samplec: String, sampled: String)
case class Three(alpha: Int, beta: Int, charlie: String, delta: String)
case class Done(notice: List[One], header: List[Two], data: List[Three])

json.extract[Done]

}

А вот образец модели.

package com.testjson.model

import net.liftweb.http.SHtml
import net.liftweb.common._
import net.liftweb.mapper._


class Done extends LongKeyedMapper[Done] with IdPK {

def getSingleton = Done

object sample1 extends MappedPoliteString(this, 12)
object sample2 extends MappedPoliteString(this, 12)
object sample3 extends MappedPoliteString(this, 56)
object samplea extends MappedPoliteString(this, 12)
object sampleb extends MappedPoliteString(this, 12)
object samplec extends MappedPoliteString(this, 56)
object alpha extends MappedPoliteString(this, 56)
object beta extends MappedInt(this)
object charlie extends MappedInt(this)
object delta extends MappedPoliteString(this, 56)

}

object Done extends Done with LongKeyedMetaMapper[Done]

Я просмотрел свою печатную копию книги, обновленную электронную книгу и группу Google безрезультатно. Я просто ищу помощь или пример кода, чтобы указать мне правильное направление.

1 Ответ

1 голос
/ 15 марта 2011

Вы создаете экземпляры моделируемого класса с помощью Object.create, используете методы apply объектов класса для установки значений экземпляра, а затем сохраняете, вызывая save.

Скажем, вы хотите установить эти значения:

  sample1: "Fishsticks"
  sample2: "InYour"
  sample3: "Mouth"

Затем вы хотите сохранить модель в базе данных.

Поскольку вы можете связывать вызовы функций, вы можете сделать это очень кратко:

// Create the instance
var newDone = newDone.create

// Set it's instance variables
newDone.sample1("Fishsticks").sample2("InYour").sample3("Mouth")

// Persist it
newDone.save

Итак, проанализировав данные JSON, вы можете использовать приведенный выше формат для сохранения их в своей базе данных.

...