jackson support for kotlin
This commit is contained in:
parent
febda47e65
commit
f8d8ef684d
|
@ -0,0 +1,14 @@
|
|||
/bin/
|
||||
|
||||
#ignore gradle
|
||||
.gradle/
|
||||
|
||||
|
||||
#ignore build and generated files
|
||||
build/
|
||||
node/
|
||||
out/
|
||||
|
||||
#ignore installed node modules and package lock file
|
||||
node_modules/
|
||||
package-lock.json
|
|
@ -0,0 +1 @@
|
|||
## Relevant articles:
|
|
@ -0,0 +1,34 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<artifactId>kotlin-libraries-2</artifactId>
|
||||
<name>kotlin-libraries-2</name>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<parent>
|
||||
<groupId>com.baeldung</groupId>
|
||||
<artifactId>parent-kotlin</artifactId>
|
||||
<version>1.0.0-SNAPSHOT</version>
|
||||
<relativePath>../parent-kotlin</relativePath>
|
||||
</parent>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.module</groupId>
|
||||
<artifactId>jackson-module-kotlin</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
|
||||
</dependencies>
|
||||
|
||||
<properties>
|
||||
</properties>
|
||||
|
||||
</project>
|
|
@ -0,0 +1,11 @@
|
|||
<configuration>
|
||||
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder>
|
||||
<pattern>%d{YYYY-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<root level="INFO">
|
||||
<appender-ref ref="STDOUT"/>
|
||||
</root>
|
||||
</configuration>
|
|
@ -0,0 +1,8 @@
|
|||
package com.baeldung.kotlin.jackson
|
||||
|
||||
import com.fasterxml.jackson.annotation.*
|
||||
|
||||
@JsonInclude(JsonInclude.Include.NON_EMPTY)
|
||||
data class Book(var title: String, @JsonProperty("author") var authorName: String) {
|
||||
var genres: List<String>? = emptyList()
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
package com.baeldung.kotlin.jackson
|
||||
|
||||
data class Movie(var name: String, var studio: String, var rating: Float? = 1f)
|
|
@ -0,0 +1,114 @@
|
|||
package com.baeldung.kotlin.jackson
|
||||
|
||||
import org.junit.Test
|
||||
import kotlin.test.assertTrue
|
||||
import kotlin.test.assertFalse
|
||||
import kotlin.test.assertEquals
|
||||
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
|
||||
import com.fasterxml.jackson.module.kotlin.readValue
|
||||
import com.fasterxml.jackson.databind.ObjectMapper
|
||||
import com.fasterxml.jackson.module.kotlin.KotlinModule
|
||||
|
||||
class JacksonUnitTest {
|
||||
//val mapper = jacksonObjectMapper()
|
||||
val mapper = ObjectMapper().registerModule(KotlinModule())
|
||||
|
||||
|
||||
@Test
|
||||
fun whenSerializeMovie_thenSuccess() {
|
||||
val movie = Movie("Endgame", "Marvel", 9.2f)
|
||||
val serialized = mapper.writeValueAsString(movie)
|
||||
|
||||
val json = """{"name":"Endgame","studio":"Marvel","rating":9.2}"""
|
||||
assertEquals(serialized, json)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun whenDeserializeMovie_thenSuccess() {
|
||||
val json = """{"name":"Endgame","studio":"Marvel","rating":9.2}"""
|
||||
// val movie: Movie = mapper.readValue(json)
|
||||
val movie = mapper.readValue<Movie>(json)
|
||||
|
||||
assertEquals(movie.name, "Endgame")
|
||||
assertEquals(movie.studio, "Marvel")
|
||||
assertEquals(movie.rating, 9.2f)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun whenDeserializeMovieWithMissingValue_thenUseDefaultValue() {
|
||||
val json = """{"name":"Endgame","studio":"Marvel"}"""
|
||||
val movie: Movie = mapper.readValue(json)
|
||||
|
||||
assertEquals(movie.name, "Endgame")
|
||||
assertEquals(movie.studio, "Marvel")
|
||||
assertEquals(movie.rating, 1f)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun whenSerializeMap_thenSuccess() {
|
||||
val map = mapOf(1 to "one", 2 to "two")
|
||||
val serialized = mapper.writeValueAsString(map)
|
||||
|
||||
val json = """{"1":"one","2":"two"}"""
|
||||
assertEquals(serialized, json)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun whenDeserializeMap_thenSuccess() {
|
||||
val json = """{"1":"one","2":"two"}"""
|
||||
val aMap: Map<Int,String> = mapper.readValue(json)
|
||||
|
||||
assertEquals(aMap[1], "one")
|
||||
assertEquals(aMap[2], "two")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun whenSerializeList_thenSuccess() {
|
||||
val movie1 = Movie("Endgame", "Marvel", 9.2f)
|
||||
val movie2 = Movie("Shazam", "Warner Bros", 7.6f)
|
||||
val movieList = listOf(movie1, movie2)
|
||||
val serialized = mapper.writeValueAsString(movieList)
|
||||
|
||||
val json = """[{"name":"Endgame","studio":"Marvel","rating":9.2},{"name":"Shazam","studio":"Warner Bros","rating":7.6}]"""
|
||||
assertEquals(serialized, json)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun whenDeserializeList_thenSuccess() {
|
||||
val json = """[{"name":"Endgame","studio":"Marvel","rating":9.2},{"name":"Shazam","studio":"Warner Bros","rating":7.6}]"""
|
||||
val movieList: List<Movie> = mapper.readValue(json)
|
||||
|
||||
val movie1 = Movie("Endgame", "Marvel", 9.2f)
|
||||
val movie2 = Movie("Shazam", "Warner Bros", 7.6f)
|
||||
assertTrue(movieList.contains(movie1))
|
||||
assertTrue(movieList.contains(movie2))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun whenSerializeBook_thenSuccess() {
|
||||
val book = Book("Oliver Twist", "Charles Dickens")
|
||||
val serialized = mapper.writeValueAsString(book)
|
||||
|
||||
val json = """{"title":"Oliver Twist","author":"Charles Dickens"}"""
|
||||
assertEquals(serialized, json)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun whenDeserializeBook_thenSuccess() {
|
||||
val json = """{"title":"Oliver Twist","author":"Charles Dickens"}"""
|
||||
val book: Book = mapper.readValue(json)
|
||||
|
||||
assertEquals(book.title, "Oliver Twist")
|
||||
assertEquals(book.authorName, "Charles Dickens")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun givenJsonInclude_whenSerializeBook_thenEmptyFieldExcluded() {
|
||||
val book = Book("Oliver Twist", "Charles Dickens")
|
||||
val serialized = mapper.writeValueAsString(book)
|
||||
|
||||
val json = """{"title":"Oliver Twist","author":"Charles Dickens"}"""
|
||||
assertEquals(serialized, json)
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue