rojoma-json-v3-jackson


License

License

Public domain
Categories

Categories

JSON Data Jackson
GroupId

GroupId

com.rojoma
ArtifactId

ArtifactId

rojoma-json-v3-jackson_2.11
Last Version

Last Version

1.0.1
Release Date

Release Date

Type

Type

jar
Description

Description

rojoma-json-v3-jackson
rojoma-json-v3-jackson
Project URL

Project URL

http://www.github.com/rjmac/rojoma-json-jackson
Project Organization

Project Organization

com.rojoma

Download rojoma-json-v3-jackson_2.11

How to add to project

<!-- https://jarcasting.com/artifacts/com.rojoma/rojoma-json-v3-jackson_2.11/ -->
<dependency>
    <groupId>com.rojoma</groupId>
    <artifactId>rojoma-json-v3-jackson_2.11</artifactId>
    <version>1.0.1</version>
</dependency>
// https://jarcasting.com/artifacts/com.rojoma/rojoma-json-v3-jackson_2.11/
implementation 'com.rojoma:rojoma-json-v3-jackson_2.11:1.0.1'
// https://jarcasting.com/artifacts/com.rojoma/rojoma-json-v3-jackson_2.11/
implementation ("com.rojoma:rojoma-json-v3-jackson_2.11:1.0.1")
'com.rojoma:rojoma-json-v3-jackson_2.11:jar:1.0.1'
<dependency org="com.rojoma" name="rojoma-json-v3-jackson_2.11" rev="1.0.1">
  <artifact name="rojoma-json-v3-jackson_2.11" type="jar" />
</dependency>
@Grapes(
@Grab(group='com.rojoma', module='rojoma-json-v3-jackson_2.11', version='1.0.1')
)
libraryDependencies += "com.rojoma" % "rojoma-json-v3-jackson_2.11" % "1.0.1"
[com.rojoma/rojoma-json-v3-jackson_2.11 "1.0.1"]

Dependencies

compile (4)

Group / Artifact Type Version
org.scala-lang : scala-library jar 2.11.2
com.rojoma : rojoma-json-v3_2.11 jar [3.1.2,4.0.0)
com.fasterxml.jackson.core : jackson-databind Optional jar 2.4.2
org.codehaus.jackson : jackson-mapper-asl Optional jar 1.9.13

test (2)

Group / Artifact Type Version
org.scalatest : scalatest_2.11 jar 3.0.5
org.scalacheck : scalacheck_2.11 jar 1.14.0

Project Modules

There are no modules declared in this project.

rojoma-json-v3-jackson

Jackson interop for rojoma-json-v3

This package provides modules that can be added to a Jackson ObjectMapper in order to have it serialize and deserialize rojoma-json JValues. It provides implementations for both codehaus.org Jackson and fasterxml.com Jackson.

import scala.beans.BeanProperty
import com.rojoma.json.v3.ast.JValue
import com.rojoma.json.v3.interpolation._
import org.codehaus.jackson.annotate.{JsonCreator, JsonProperty}
import org.codehaus.jackson.map.ObjectMapper
import com.rojoma.json.v3.jackson.codehaus.Module // or .fasterxml.Module

case class Foo @JsonCreator() (
  @JsonProperty("someValue") @BeanProperty someValue: JValue
)

val mapper = new ObjectMapper
mapper.registerModule(Module)

val foo = Foo(j"{hello:'world'}")
mapper.writeValueAsString(foo) // == {"someValue":{"hello":"world"}}
mapper.readValue("""{"someValue":{"hello":"world"}}""", classOf[Foo]) // == foo

It also provides classes that can be used to create serializers and deserializers for things with rojoma-json JsonEncodes and JsonDecodes.

import scala.beans.BeanProperty
import com.rojoma.json.v3.ast.JValue
import com.rojoma.json.v3.util._
import org.codehaus.jackson.annotate.{JsonCreator, JsonProperty}
import org.codehaus.jackson.map.ObjectMapper
import org.codehaus.jackson.map.annotate.{JsonSerialize, JsonDeserialize}
import com.rojoma.json.v3.jackson.codehaus._ // or .fasterxml._

@JsonSerialize(using=classOf[JsonableThingSerializer])
@JsonDeserialize(using=classOf[JsonableThingDeserializer])
case class JsonableThing(x: Int, y: String)
object JsonableThing {
  implicit val jCodec = AutomaticJsonCodecBuilder[JsonableThing]
}
class JsonableThingSerializer extends ViaJValueSerializer[JsonableThing]
class JsonableThingDeserializer extends ViaJValueDeserializer[JsonableThing]

case class Foo @JsonCreator() (
  @JsonProperty("someValue") @BeanProperty someValue: JsonableThing
)

val mapper = new ObjectMapper
val foo = Foo(JsonableThing(42, "hello!"))
mapper.writeValueAsString(foo) // == {"someValue":{"x":42,"y":"hello!"}}
mapper.readValue("""{"someValue":{"x":42,"y":"hello!"}}""", classOf[Foo]) // == foo

Getting it

rojoma-json-jackston is published on Maven central, so setting up SBT is as simple as

libraryDependencies += "com.rojoma" %% "rojoma-json-v3-jackson" % "1.0.1"

While for Maven, the pom snippet is:

<dependencies>
  <dependency>
    <groupId>com.rojoma</groupId>
    <artifactId>rojoma-json-v3-jackson_${scala.version}</artifactId>
    <version>1.0.1</version>
  </dependency>
</dependencies>

rojoma-json-jackson is published for Scala version 2.10, 2.11, 2.12, and 2.13.

Versions

Version
1.0.1
1.0.0