本文整理汇总了Scala中org.json4s.Extraction类的典型用法代码示例。如果您正苦于以下问题:Scala Extraction类的具体用法?Scala Extraction怎么用?Scala Extraction使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Extraction类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Scala代码示例。
示例1: ItemController
//设置package包名称以及导入依赖的类
package controllers
import javax.inject.Inject
import com.github.tototoshi.play2.json4s.native.Json4s
import models.{Item, ItemDetail}
import org.json4s.{DefaultFormats, Extraction}
import parsers.ItemParser
import play.api.mvc.{Action, Controller}
import requests.UploadZipItemForm
import scalikejdbc.DB
class ItemController @Inject()(json4s: Json4s) extends Controller {
import json4s._
import Responses._
import models.PersistItem.getItemId
implicit val formats = DefaultFormats
def list() = Action {
import models.Aliases.i
val items = Item.findAll(i.name :: Nil)
Ok(Extraction.decompose(items))
}
def show(itemId: Long) = Action {
Item.findById(itemId).fold(notFound(s"itemId = ${itemId}")) { item =>
Ok(Extraction.decompose(item))
}
}
def upload() = Action(parse.multipartFormData){ implicit req =>
UploadZipItemForm.fromReq(req).fold(BadRequest("Form error")){ form =>
DB localTx { implicit session =>
ZipUtil.inputStreams(form.file.ref.file).foreach{ is =>
ItemParser.parse(is).foreach{ item =>
val itemId = getItemId(item.name)
ItemDetail.deleteById(itemId)
ItemDetail.create(item.detail(itemId))
}
}
}
Redirect(routes.MyAssets.at("uploader.html"))
}
}
}
示例2: dbObj2Obj
//设置package包名称以及导入依赖的类
package mongo
import com.mongodb.DBObject
import com.mongodb.casbah.MongoCollection
import org.json4s.Extraction
import org.json4s.JsonAST.JField
import org.json4s.mongo.JObjectParser
import org.json4s.JsonDSL._
import org.json4s.mongo.JObjectParser._
trait MongoObjectHelper[A]{
protected implicit val formats: org.json4s.Formats
def dbObj2Obj[T](o: MongoCollection#T)(implicit m: Manifest[A]): A = {
val json = JObjectParser.serialize(o)
Extraction.extract[A](json)
}
def obj2DbObj(obj: A): DBObject = {
JObjectParser.parse(Extraction.decompose(obj))
}
}
示例3: DecompileLayoutSerializer
//设置package包名称以及导入依赖的类
package org.argus.amandroid.serialization
import org.argus.amandroid.core.decompile.DecompileLayout
import org.argus.jawa.core.util.{FileResourceUri, ISet}
import org.json4s.{CustomSerializer, Extraction, JValue}
import org.json4s.JsonDSL._
object DecompileLayoutSerializer extends CustomSerializer[DecompileLayout](format => (
{
case jv: JValue =>
implicit val formats = format
val outputUri = (jv \ "outputUri").extract[FileResourceUri]
val createFolder = (jv \ "createFolder").extract[Boolean]
val srcFolder = (jv \ "srcFolder").extract[String]
val libFolder = (jv \ "libFolder").extract[String]
val createSeparateFolderForDexes = (jv \ "createSeparateFolderForDexes").extract[Boolean]
val pkg = (jv \ "pkg").extract[String]
val outputSrcUri = (jv \ "outputSrcUri").extract[FileResourceUri]
val sourceFolders = (jv \ "sourceFolders").extract[ISet[String]]
val libFolders = (jv \ "libFolders").extract[ISet[String]]
val dependencies = (jv \ "dependencies").extract[ISet[String]]
val thirdPartyLibraries = (jv \ "thirdPartyLibraries").extract[ISet[String]]
val layout = DecompileLayout(outputUri, createFolder, srcFolder, libFolder, createSeparateFolderForDexes)
layout.pkg = pkg
layout.outputSrcUri = outputSrcUri
layout.sourceFolders = sourceFolders
layout.libFolders = libFolders
layout.dependencies = dependencies
layout.thirdPartyLibraries = thirdPartyLibraries
layout
},
{
case layout: DecompileLayout =>
implicit val formats = format
val outputUri: FileResourceUri = layout.outputSrcUri
val createFolder: Boolean = layout.createFolder
val srcFolder: String = layout.srcFolder
val libFolder: String = layout.libFolder
val createSeparateFolderForDexes: Boolean = layout.createSeparateFolderForDexes
val pkg: String = layout.pkg
val outputSrcUri: FileResourceUri = layout.outputSrcUri
val sourceFolders: ISet[String] = layout.sourceFolders
val libFolders: ISet[String] = layout.libFolders
val dependencies: ISet[String] = layout.dependencies
val thirdPartyLibraries: ISet[String] = layout.thirdPartyLibraries
("outputUri" -> outputUri) ~
("createFolder" -> createFolder) ~
("srcFolder" -> srcFolder) ~
("libFolder" -> libFolder) ~
("createSeparateFolderForDexes" -> createSeparateFolderForDexes) ~
("pkg" -> pkg) ~
("outputSrcUri" -> outputSrcUri) ~
("sourceFolders" -> Extraction.decompose(sourceFolders)) ~
("libFolders" -> Extraction.decompose(libFolders)) ~
("dependencies" -> Extraction.decompose(dependencies)) ~
("thirdPartyLibraries" -> Extraction.decompose(thirdPartyLibraries))
}
))
示例4: JSON
//设置package包名称以及导入依赖的类
package se.joham.funrts.util
import org.json4s.{CustomSerializer, Extraction, ShortTypeHints}
import se.joham.funrts.model._
import Extraction.{decompose, extract}
import org.json4s.JsonAST.JValue
import se.gigurra.scalego.serialization.KnownSubTypes
import se.gigurra.scalego.serialization.json.JsonSerializer
import se.joham.funrts.model.FunRtsECS.{ECS, IdTypes}
import org.json4s.jackson.JsonMethods.{compact, parse}
import org.json4s.jackson.JsonMethods.{pretty => prty}
object JSON {
def writeAst(ecs: ECS): JValue = ecsSerializer.SerializableOps(ecs).toJsonAst
def write(ecs: ECS, pretty: Boolean): String = ecsSerializer.SerializableOps(ecs).toJson(pretty)
def writeAst(terrain: Terrain): JValue = decompose(terrain)
def write(terrain: Terrain, pretty: Boolean): String = if (pretty) prty(writeAst(terrain)) else compact(writeAst(terrain))
def readEcsAst(ecs: ECS, json: JValue): Unit = ecsSerializer.SerializableOps(ecs).appendJsonAst(json)
def readEcs(ecs: ECS, json: String): Unit = ecsSerializer.SerializableOps(ecs).appendJson(json)
def readTerrainAst(json: JValue): Terrain = extract[Terrain](json)
def readTerrain(json: String): Terrain = readTerrainAst(parse(json))
//////////////////////////////////////////////////////////////////////////////////////
object TerrainSerializer extends CustomSerializer[Terrain](_ => ({
case json => extract[TerrainSerializable](json).toTerrain },{
case terrain: Terrain => decompose(new TerrainSerializable(terrain))
}))
case class TerrainSerializable(nx: Int, ny: Int, base64Tiles: String) {
def this(terrain: Terrain) = this(terrain.nx, terrain.ny, Base64.encodeString(terrain.tiles))
def toTerrain: Terrain = Terrain(nx, ny, Base64.decodeBinary(base64Tiles))
}
implicit lazy val jsonFormats = org.json4s.DefaultFormats + TerrainSerializer + ShortTypeHints(Action.classes)
val ecsSerializer = new JsonSerializer[IdTypes](
knownSubtypes = KnownSubTypes.fromShortClassName(types = Action.classes:_*),
jsonFormats = jsonFormats
)
}
示例5: Companies
//设置package包名称以及导入依赖的类
package controllers
import authes.AuthConfigImpl
import authes.Role.{Administrator, NormalUser}
import com.github.tototoshi.play2.json4s.Json4s
import com.google.inject.Inject
import jp.t2v.lab.play2.auth.AuthElement
import models.{Company, Fare, TrainType, TrainTypeSerializer}
import org.json4s.{DefaultFormats, Extraction}
import play.api.mvc.Controller
import queries.{CreateCompany, CreateFares}
import scalikejdbc._
class Companies @Inject() (json4s: Json4s) extends Controller with AuthElement with AuthConfigImpl {
import Responses._
import json4s._
implicit val formats = DefaultFormats + TrainTypeSerializer
def list() = StackAction(AuthorityKey -> Administrator) { implicit req =>
Ok(Extraction.decompose(Company.findAll(Seq(Company.defaultAlias.id))))
}
def create() = StackAction(json, AuthorityKey -> Administrator) { implicit req =>
req.body.extractOpt[CreateCompany].fold(JSONParseError) { company =>
DB localTx { implicit session =>
val id = company.company.save()
Ok(id.toString)
}
}
}
// Fare table?????????????????
def existsFare() = StackAction(AuthorityKey -> NormalUser) { implicit req =>
Ok(Extraction.decompose(Fare.existsFare()(AutoSession)))
}
def fares(companyId: Long, trainType: Int) = StackAction(AuthorityKey -> NormalUser) { implicit req =>
import models.DefaultAliases.f
TrainType.find(trainType).fold(notFound(s"train type: ${trainType}")) { tType =>
val fares = Fare.findAllBy(sqls.eq(f.companyId, companyId).and.eq(f.trainType, tType.value))
Ok(Extraction.decompose(fares))
}
}
def createFares(companyId: Long, trainType: Int) = StackAction(json, AuthorityKey -> Administrator) { implicit req =>
req.body.extractOpt[CreateFares].fold(JSONParseError) { fares =>
TrainType.find(trainType).fold(notFound(s"train type: ${trainType}")) { tType =>
DB localTx { implicit session =>
val f = Fare.column
Fare.deleteBy(sqls.eq(f.companyId, companyId).and.eq(f.trainType, trainType))
fares.fares.map(_.fare(companyId, tType)).foreach(_.save)
}
Ok("Success")
}
}
}
}
示例6: Releases
//设置package包名称以及导入依赖的类
package controllers
import authes.AuthConfigImpl
import authes.Role.Administrator
import com.github.tototoshi.play2.json4s.Json4s
import com.google.inject.Inject
import jp.t2v.lab.play2.auth.AuthElement
import models.{Diagram, TrainTypeSerializer}
import org.json4s.{DefaultFormats, Extraction}
import scalikejdbc._
import play.api.mvc.Controller
import responses.{DiagramResponse, ReleaseResponse}
class Releases @Inject() (json4s: Json4s) extends Controller with AuthElement with AuthConfigImpl {
import json4s._
implicit val format = DefaultFormats + TrainTypeSerializer
def list() = StackAction(AuthorityKey -> Administrator) { implicit req =>
import models.DefaultAliases.d
val diagrams = Diagram.joins(Diagram.stopStationRef).findAllBy(sqls.isNotNull(d.staging))
val result = diagrams.groupBy(_.staging.get).map {
case (staging, ds) =>
ReleaseResponse(staging, ds.map(DiagramResponse.fromDiagram))
}
Ok(Extraction.decompose(result))
}
}
示例7: Accounts
//设置package包名称以及导入依赖的类
package controllers
import authes.AuthConfigImpl
import authes.Role.NormalUser
import com.github.tototoshi.play2.json4s.Json4s
import com.google.inject.Inject
import jp.t2v.lab.play2.auth.AuthElement
import models.{Account, AccountSerializer, Mission}
import org.json4s.{DefaultFormats, Extraction}
import play.api.mvc.{Action, Controller}
import queries.CreateAccount
import scalikejdbc._
class Accounts @Inject() (json4s: Json4s) extends Controller with AuthElement with AuthConfigImpl {
import json4s._
import Responses._
implicit val formats = DefaultFormats + AccountSerializer
def show() = StackAction(AuthorityKey -> NormalUser) { implicit req =>
Ok(Extraction.decompose(loggedIn))
}
def showMin(id: Long) = Action {
Account.findById(id).fold(notFound("player")) { account =>
Ok(Extraction.decompose(account.minimal))
}
}
def createAccount() = Action(json) { req =>
req.body.extractOpt[CreateAccount].fold(JSONParseError) { account =>
account.account.save()(AutoSession)
Success
}
}
def missions(id: Long) = Action {
import models.DefaultAliases.m
val missions = Mission.findAllBy(sqls.eq(m.creator, id))
Ok(Extraction.decompose(missions.sortBy(-_.rate)))
}
}
示例8: Histories
//设置package包名称以及导入依赖的类
package controllers
import authes.AuthConfigImpl
import authes.Role.Administrator
import com.github.tototoshi.play2.json4s.Json4s
import com.google.inject.Inject
import jp.t2v.lab.play2.auth.AuthElement
import models.{Diagram, History}
import org.json4s.{DefaultFormats, Extraction}
import play.api.mvc.{Action, Controller}
import queries.CreateHistory
import scalikejdbc._
class Histories @Inject() (json4s: Json4s) extends Controller with AuthElement with AuthConfigImpl {
import controllers.Responses._
import json4s._
implicit val format = DefaultFormats
def list() = Action {
import models.DefaultAliases.h
Ok(Extraction.decompose(History.findAllWithLimitOffset(limit = 20, orderings = Seq(h.id.desc))))
}
def create() = StackAction(json, AuthorityKey -> Administrator) { implicit req =>
req.body.extractOpt[CreateHistory].fold(JSONParseError) { his =>
DB.localTx { implicit session =>
his.release.foreach { r =>
Diagram.updateBy(sqls.eq(Diagram.column.staging, r)).withAttributes('staging -> None)
}
his.history().save()
Success
}
}
}
}
示例9: Validators
//设置package包名称以及导入依赖的类
package controllers
import authes.AuthConfigImpl
import authes.Role.Administrator
import com.github.tototoshi.play2.json4s.Json4s
import com.google.inject.Inject
import jp.t2v.lab.play2.auth.AuthElement
import models._
import org.json4s.{DefaultFormats, Extraction}
import play.api.mvc.Controller
import scalikejdbc.AutoSession
import utils.MethodProfiler
import validator._
class Validators @Inject() (json4s: Json4s) extends Controller with AuthElement with AuthConfigImpl {
import json4s._
implicit val format = DefaultFormats + ErrorSerializer
def list() = StackAction(AuthorityKey -> Administrator) { implicit req =>
import LineStation.{lineRef, stationRef}
val profiler = MethodProfiler.Nop
val errors = profiler("all") {
val diagrams = profiler("diagrams") {
Diagram.findAllIds()(AutoSession)
}
val stops = profiler("stops") {
StopStation.findAll()
}
val trains = profiler("trains") {
Train.allDiagramIds()(AutoSession).toSet
}
val stations = profiler("lineStations") {
LineStation.joins(lineRef, stationRef).findAll()
}
profiler("diagramsValidator") {
val validator = new DiagramValidator(stops, stations)
diagrams.flatMap(validator.validate)
} ++ profiler("stationStopValidator") {
new StationStopValidator(stops).validate(stations)
} ++ profiler("lackTrainValidator") {
val validator = new LackTrainValidator(trains)
diagrams.flatMap(validator.validate)
} ++ profiler("stationGeoValidator") {
val stations = Station.joins(Station.geoRef).findAll()
StationGeoValidator.validate(stations)
}
}
Ok(Extraction.decompose(errors))
}
}
示例10: Scraper
//设置package包名称以及导入依赖的类
package controllers
import authes.AuthConfigImpl
import authes.Role.Administrator
import com.github.tototoshi.play2.json4s.Json4s
import com.google.inject.Inject
import jp.t2v.lab.play2.auth.AuthElement
import net.liftweb.util.Html5
import org.json4s.{DefaultFormats, Extraction}
import play.api.mvc.{Action, Controller}
import scrape.model.{StationPage, TrainPage}
import scala.io.Codec
import scala.xml._
class Scraper @Inject() (json4s: Json4s) extends Controller with AuthElement with AuthConfigImpl {
import Responses._
import Scraper._
import json4s._
implicit val formats = DefaultFormats
def station(lineId: String, pageName: String) = Action { implicit req =>
val url = s"${Host}/newdata/ekijikoku/${lineId}/${pageName}.htm"
val xml = loadXML(url)
StationPage.fromXml(xml) match {
case Left(str) => notFound(str)
case Right(station) =>
val trains = station.trains.filterNot(_.add.contains("?"))
Ok(Extraction.decompose(trains.map(_.replaceAbbr(station.abbr))))
}
}
def timeTable(lineId: String, pageName: String) = StackAction(AuthorityKey -> Administrator) { implicit req =>
???
}
def train(lineId: String, trainId: String) = StackAction(AuthorityKey -> Administrator) { implicit req =>
val address = s"/newdata/detail/${lineId}/${trainId}.htm"
TrainPage.fromXML(loadXML(s"${Host}${address}"), address) match {
case Left(str) => notFound(str)
case Right(train) => Ok(Extraction.decompose(train))
}
}
private[this] def loadXML(url: String): NodeSeq = {
val html = scala.io.Source.fromURL(url)(Codec("Shift_JIS")).mkString
Html5.parse(html) openOr NodeSeq.Empty
}
}
object Scraper {
val Host = "http://www.ekikara.jp"
}
示例11: DeputadosResource
//设置package包名称以及导入依赖的类
package com.nakamura.camara.deputados
import javax.ws.rs.container.{AsyncResponse, Suspended}
import javax.ws.rs._
import javax.ws.rs.core.MediaType
import com.codahale.metrics.annotation.{ExceptionMetered, Timed}
import com.nakamura.camara.deputados.deputado.Deputado
import org.json4s.Extraction
import org.json4s.jackson.JsonMethods._
import scala.concurrent.{ExecutionContext, Future}
import scala.util.{Failure, Success}
@Path("/deputados/")
class DeputadosResource(service: DeputadosService,
implicit val executionContext: ExecutionContext) {
implicit val formats = org.json4s.DefaultFormats
@GET
@Timed
@ExceptionMetered
@Path("/fetch")
@Produces(Array(MediaType.APPLICATION_JSON))
def fetchDeputados(@Suspended asyncResponse: AsyncResponse): Unit = {
val future: Future[Seq[Deputado]] = service.getDeputados() match {
case Success(deputados) => Future(deputados)
case Failure(err) => Future(throw new Error("Failed."))
}
future onSuccess { case response: Seq[Deputado] =>
asyncResponse.resume(compact(render(Extraction.decompose(response))))
}
future onFailure { case t: Throwable =>
asyncResponse.resume(t)
}
}
}
示例12: UpdateSerializer
//设置package包名称以及导入依赖的类
package ru.finagram.api.json
import org.json4s.JsonAST.JObject
import org.json4s.JsonDSL._
import org.json4s.{ DefaultFormats, Extraction, Formats, JValue, Serializer, TypeInfo }
import ru.finagram.api.{ CallbackQueryUpdate, MessageUpdate, Update }
import ru.finagram.!!!
object UpdateSerializer extends Serializer[Update] {
private val UpdateClass = classOf[Update]
override def deserialize(implicit format: Formats): PartialFunction[(TypeInfo, JValue), Update] = {
case (TypeInfo(UpdateClass, _), json: JObject) =>
json.values match {
case v if v.contains("message") =>
json.extract[MessageUpdate]
case v if v.contains("callbackQuery") =>
json.extract[CallbackQueryUpdate]
case v => !!!(s"Not implemented deserialization for $v")
}
}
override def serialize(implicit format: Formats): PartialFunction[Any, JValue] = {
case u: MessageUpdate =>
("update_id" -> u.updateId) ~~ ("message" -> json(u.message))
case u: CallbackQueryUpdate =>
("update_id" -> u.updateId) ~~ ("callback_query" -> json(u.callbackQuery))
}
private def json(obj: AnyRef): JValue = {
implicit val formats = DefaultFormats
Extraction.decompose(obj).snakizeKeys
}
}
示例13: MessageSerializer
//设置package包名称以及导入依赖的类
package ru.finagram.api.json
import org.json4s.JsonAST._
import org.json4s.JsonDSL._
import org.json4s.{ DefaultFormats, Extraction, Formats, JValue, Serializer, TypeInfo }
import ru.finagram.api._
import ru.finagram.!!!
object MessageSerializer extends Serializer[Message] {
private val MessageClass = classOf[Message]
override def deserialize(implicit format: Formats): PartialFunction[(TypeInfo, JValue), Message] = {
case (TypeInfo(MessageClass, _), json: JObject) =>
json.values match {
case v if v.contains("video") =>
json.extract[VideoMessage]
case v if v.contains("voice") =>
json.extract[VoiceMessage]
case v if v.contains("photo") =>
json.extract[PhotoMessage]
case v if v.contains("location") =>
json.extract[LocationMessage]
case v if v.contains("document") =>
json.extract[DocumentMessage]
case v if v.contains("sticker") =>
json.extract[StickerMessage]
case v if v.contains("text") =>
json.extract[TextMessage]
case v => !!!(s"Not implement deserialization for $v")
}
}
override def serialize(implicit format: Formats): PartialFunction[Any, JValue] = {
case m: VideoMessage =>
JMessage(m) ~~ ("video" -> json(m.video))
case m: VoiceMessage =>
JMessage(m) ~~ ("voice" -> json(m.voice))
case m: PhotoMessage =>
JMessage(m) ~~ ("photo" -> json(m.photo))
case m: LocationMessage =>
JMessage(m) ~~ ("location" -> json(m.location))
case m: DocumentMessage =>
JMessage(m) ~~ ("document" -> json(m.document))
case m: StickerMessage =>
JMessage(m) ~~ ("sticker" -> json(m.sticker))
case m: TextMessage =>
JMessage(m) ~~ ("text" -> m.text)
}
private def JMessage(m: Message): JObject = {
val jobject = ("messageId" -> m.messageId) ~ ("chat" -> json(m.chat)) ~ ("date" -> m.date)
if (m.from.isEmpty) jobject else jobject ~~ ("from", json(m.from.get))
}
private def json(obj: AnyRef): JValue = {
implicit val formats = DefaultFormats
Extraction.decompose(obj)
}
}
示例14: Implicit
//设置package包名称以及导入依赖的类
package ru.finagram.api
import org.json4s.{ DefaultFormats, Extraction, Formats }
import org.json4s.native.JsonMethods._
package object json {
val serializers = Seq(
TelegramResponseSerializer,
UpdateSerializer,
MessageSerializer,
AnswerSerializer,
KeyboardMarkupSerializer
)
object Implicit {
implicit val formats = DefaultFormats ++ serializers
}
def compactWrite(obj: Any)(implicit formats: Formats): String = {
compact(render(Extraction.decompose(obj).snakizeKeys))
}
}
示例15: Json
//设置package包名称以及导入依赖的类
package com.paypal.risk.smunf.util
import org.json4s.DefaultFormats
import org.json4s.Extraction
import org.json4s.jackson.JsonMethods
object Json {
def toJsonString(in: Any): String = {
implicit val formats = DefaultFormats
JsonMethods.compact(JsonMethods.render(Extraction.decompose(in)))
}
def toPrettyJsonString(in: Any): String = {
implicit val formats = DefaultFormats
JsonMethods.pretty(JsonMethods.render(Extraction.decompose(in)))
}
}