当前位置: 首页>>代码示例>>Scala>>正文


Scala JsonFactory类代码示例

本文整理汇总了Scala中com.fasterxml.jackson.core.JsonFactory的典型用法代码示例。如果您正苦于以下问题:Scala JsonFactory类的具体用法?Scala JsonFactory怎么用?Scala JsonFactory使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


在下文中一共展示了JsonFactory类的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Scala代码示例。

示例1: MsgPackSerializeBench

//设置package包名称以及导入依赖的类
package knot.msgpack

import java.util.concurrent.TimeUnit

import com.fasterxml.jackson.core.JsonFactory
import com.fasterxml.jackson.databind.ObjectMapper
import knot.msgpack.testValues.{JavaMedia, Media}
import org.msgpack.jackson.dataformat.MessagePackFactory
import org.openjdk.jmh.annotations._

@State(Scope.Benchmark)
@Measurement(timeUnit = TimeUnit.MILLISECONDS)
class MsgPackSerializeBench {

  val knotSer = new MsgPackSerializerFactory().get[Media]()
  val jacksonFactory = new MessagePackFactory()
  jacksonFactory.configure(JsonFactory.Feature.USE_THREAD_LOCAL_FOR_BUFFER_RECYCLING, false)
  val jacksonMapper = new ObjectMapper(jacksonFactory)

  val src = new Media().setup()
  val jsrc = JavaMedia.setup()
  var knotSize: Int = 0
  var jacksonSize: Int = 0

  @TearDown
  def teardown() = {
    println(s"knot:$knotSize")
    println(s"jackson:$jacksonSize")
  }

  @Benchmark
  def ser_knot() = {
    val ar = knotSer.serialize(src)
    knotSize = ar.length
  }

  @Benchmark
  def ser_jackson() = {
    val ar = jacksonMapper.writeValueAsBytes(jsrc)
    jacksonSize = ar.length
  }
} 
开发者ID:defvar,项目名称:knot,代码行数:43,代码来源:MsgPackSerializeBench.scala

示例2: MessageReader

//设置package包名称以及导入依赖的类
package com.hypertino.hyperbus.serialization

import java.io.{Reader, StringReader}

import com.fasterxml.jackson.core.{JsonFactory, JsonParser}
import com.hypertino.binders.json.{JacksonParserAdapter, JsonBindersFactory}
import com.hypertino.binders.value.{Obj, Text, Value}
import com.hypertino.hyperbus.model.{Body, Header, Headers, HeadersMap, Message}

object MessageReader {
  def read[M <: Message[_ <: Body,_ <: Headers]](reader: Reader, concreteDeserializer: MessageDeserializer[M]): M = {
    val jacksonFactory = new JsonFactory()
    jacksonFactory.disable(JsonParser.Feature.AUTO_CLOSE_SOURCE)

    val jp = jacksonFactory.createParser(reader)
    val headers = try {
      val adapter = new JacksonParserAdapter(jp)
      val headers = JsonBindersFactory.findFactory().withJsonParserApi(adapter) { jpa ?
        val headersSeq = jpa.unbind[Value].asInstanceOf[Obj].v.toSeq // todo: this isn't great, also see https://github.com/hypertino/binders/issues/2

        val transformedSeq = headersSeq.map {
          case (Header.CONTENT_TYPE, value) ? Header.CONTENT_TYPE ? JsonContentTypeConverter.universalJsonContentTypeToSimple(value)
          case other ? other
        }

        HeadersMap(transformedSeq: _*)
      }

      jp.nextToken()
      val offset = jp.getTokenLocation.getCharOffset
      reader.reset()
      reader.skip(offset)
      headers
    }
    finally {
      jp.close()
    }

    concreteDeserializer(reader, headers)
  }

  def fromString[M <: Message[_ <: Body,_ <: Headers]](message: String, concreteDeserializer: MessageDeserializer[M]): M = {
    val stringReader = new StringReader(message)
    try {
      read(stringReader, concreteDeserializer)
    }
    finally {
      stringReader.close()
    }
  }
} 
开发者ID:hypertino,项目名称:hyperbus,代码行数:52,代码来源:MessageReader.scala

示例3: TestStream

//设置package包名称以及导入依赖的类
import java.io.{StringReader, StringWriter}

import com.fasterxml.jackson.core.{JsonFactory, JsonParser}
import com.hypertino.binders.json.{JacksonGeneratorAdapter, JacksonParserAdapter, JsonBinders, JsonBindersFactory}
import org.scalatest.{FlatSpec, Matchers}

case class TestStream(id: Double)

class TestStreamSerializer extends FlatSpec with Matchers {
  import JsonBinders._

  it should " serialize sequentially" in {
    val writer = new StringWriter()
    10.writeJson(writer)
    "hey".writeJson(writer)
    TestStream(10.2).writeJson(writer)
    writer.toString should equal("""10"hey"{"id":10.2}""")
  }

  it should " deserialize sequentially (with JacksonParser)" in {
    val reader = new StringReader(
      """
        10
        "hey"
        {"id":10.2}
      """)

    val jacksonFactory = new JsonFactory()
    jacksonFactory.disable(JsonParser.Feature.AUTO_CLOSE_SOURCE)

    val jp = jacksonFactory.createParser(reader)
    try {
      val adapter = new JacksonParserAdapter(jp)
      JsonBindersFactory.findFactory().withJsonParserApi(adapter) { jpa ?
        jpa.unbind[Int] should equal(10)
      }
      JsonBindersFactory.findFactory().withJsonParserApi(adapter) { jpa ?
        jpa.unbind[String] should equal("hey")
      }
      JsonBindersFactory.findFactory().withJsonParserApi(adapter) { jpa ?
        jpa.unbind[TestStream] should equal(TestStream(10.2))
      }
    }
    finally {
      jp.close()
    }

    reader.close()
  }
} 
开发者ID:hypertino,项目名称:json-binders,代码行数:51,代码来源:TestStreamSerializer.scala


注:本文中的com.fasterxml.jackson.core.JsonFactory类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。