Pergunta

Estou tentando salvar os dados parecidos com a extração de dados JSON da Lifts e salvá -los no banco de dados (via Mapper), mas não consigo encontrar onde conectar o snippit ao mapeador. O código se parece com isso.

Aqui está um snippit de teste.

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]

}

E aqui um modelo de amostra.

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]

Eu olhei através da minha cópia impressa do livro, do e -book atualizado e do grupo do Google sem sucesso. Estou apenas procurando ajuda ou talvez um exemplo de código para me apontar na direção certa.

Foi útil?

Solução

Você cria instâncias de uma classe modelada usando o object.create, usa os métodos de aplicação dos objetos da classe para definir os valores da instância e depois persiste chamando o salvamento.

Diga que você queria definir esses valores:

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

Você deseja salvar o modelo no banco de dados.

Como você pode encadear chamadas de função, você pode fazer isso de maneira muito sucinta:

// Create the instance
var newDone = newDone.create

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

// Persist it
newDone.save

Portanto, depois de analisar seus dados JSON, você pode usar o formato acima para persistir no seu banco de dados.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top