Skip to content

Commit f9fe79e

Browse files
committed
[FIX] #26 SpringBootCustomJackson
1 parent 2d03a3c commit f9fe79e

File tree

5 files changed

+116
-5
lines changed

5 files changed

+116
-5
lines changed

Diff for: SpringBootCustomJackson/src/main/java/com/example/java/SpringBootCustomJacksonApplication.java

+1-5
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,6 @@ public static void main(String[] args) {
1414

1515
System.out.println("Let's inspect the beans provided by Spring Boot:");
1616

17-
String[] beanNames = ctx.getBeanDefinitionNames();
18-
Arrays.sort(beanNames);
19-
for (String beanName : beanNames) {
20-
System.out.println(beanName);
21-
}
17+
Arrays.stream(ctx.getBeanDefinitionNames()).sorted().forEach(System.out::println);
2218
}
2319
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.example.kotlin
2+
3+
import org.springframework.boot.autoconfigure.SpringBootApplication
4+
import org.springframework.boot.runApplication
5+
import java.util.*
6+
7+
@SpringBootApplication
8+
class SpringBootCustomJacksonApplication
9+
10+
fun main(args: Array<String>) {
11+
12+
val context = runApplication<SpringBootCustomJacksonApplication>(*args)
13+
14+
println("Let's inspect the beans provided by Spring Boot:")
15+
16+
context.beanDefinitionNames.asList().sorted().forEach { println(it) }
17+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package com.example.kotlin.component
2+
3+
import com.example.kotlin.domain.Model
4+
import com.fasterxml.jackson.core.JsonGenerator
5+
import com.fasterxml.jackson.core.JsonParser
6+
import com.fasterxml.jackson.databind.*
7+
import org.springframework.boot.jackson.JsonComponent
8+
import org.springframework.util.Base64Utils
9+
import java.io.IOException
10+
11+
@JsonComponent
12+
class EncodedJsonComponent {
13+
14+
class DecyptDataDeserializer : JsonDeserializer<Model>() {
15+
16+
override fun handledType(): Class<*> {
17+
return Model::class.java
18+
}
19+
20+
@Throws(IOException::class)
21+
override fun deserialize(p: JsonParser, ctxt: DeserializationContext): Model {
22+
val codec = p.codec
23+
val node = codec.readTree<JsonNode>(p)
24+
25+
val it = node.fieldNames()
26+
while (it.hasNext()) {
27+
val field = it.next()
28+
println(field + ":" + node.get(field))
29+
}
30+
31+
val name = String(Base64Utils.decodeFromString(node.get("name").asText()))
32+
val type = node.get("type").asInt()
33+
println("---------------------------------------------------")
34+
return Model(name, type)
35+
}
36+
}
37+
38+
class EncyptDataSerializer : JsonSerializer<Model>() {
39+
40+
override fun handledType(): Class<Model> {
41+
return Model::class.java
42+
}
43+
44+
@Throws(IOException::class)
45+
override fun serialize(value: Model, json: JsonGenerator,
46+
provider: SerializerProvider) {
47+
json.writeStartObject()
48+
json.writeFieldName("name")
49+
json.writeString(Base64Utils.encodeToString(value.name.toByteArray()))
50+
json.writeFieldName("type")
51+
json.writeNumber(value.type)
52+
json.writeEndObject()
53+
}
54+
55+
}
56+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
package com.example.kotlin.domain
2+
3+
data class Model(val name: String, val type: Int)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package com.example.kotlin.web
2+
3+
import com.example.kotlin.domain.Model
4+
import org.slf4j.LoggerFactory
5+
import org.springframework.web.bind.annotation.GetMapping
6+
import org.springframework.web.bind.annotation.PostMapping
7+
import org.springframework.web.bind.annotation.RequestBody
8+
import org.springframework.web.bind.annotation.RestController
9+
import java.util.*
10+
11+
@RestController
12+
class BasicController {
13+
14+
companion object {
15+
private val logger = LoggerFactory.getLogger(BasicController::class.java)
16+
}
17+
18+
@GetMapping("/se")
19+
fun index(): List<Model> {
20+
val list = ArrayList<Model>()
21+
list.add(Model("abc", 1))
22+
list.add(Model("def", 2))
23+
list.add(Model("ghi", 3))
24+
list.add(Model("jkl", 4))
25+
list.add(Model("nmo", 5))
26+
list.add(Model("pqr", 6))
27+
list.add(Model("stu", 7))
28+
list.add(Model("vwx", 8))
29+
list.add(Model("yz", 9))
30+
31+
return list
32+
}
33+
34+
@PostMapping("/de")
35+
fun deIndex(@RequestBody deList: List<Model>): List<Model> {
36+
logger.info(deList.toString())
37+
return deList
38+
}
39+
}

0 commit comments

Comments
 (0)