本文整理汇总了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
}
}
示例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()
}
}
}
示例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()
}
}