All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.blr19c.falowp.bot.system.json.Json.kt Maven / Gradle / Ivy

There is a newer version: 2.0.0-RC2
Show newest version
package com.blr19c.falowp.bot.system.json

import com.fasterxml.jackson.core.TreeNode
import com.fasterxml.jackson.core.type.TypeReference
import com.fasterxml.jackson.databind.DeserializationFeature
import com.fasterxml.jackson.databind.JsonNode
import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.databind.module.SimpleModule
import com.fasterxml.jackson.databind.node.ArrayNode
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
import com.fasterxml.jackson.module.kotlin.registerKotlinModule
import java.lang.reflect.Type
import java.time.LocalDateTime
import kotlin.reflect.KClass


/**
 * json序列化
 */
object Json {
    private val json: ObjectMapper by lazy {
        val module = SimpleModule()
        module.addDeserializer(LocalDateTime::class.java, LocalDateTimeDeserializer)
        ObjectMapper()
            .registerModules(JavaTimeModule(), module)
            .registerKotlinModule()
            .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
    }

    fun toJsonString(data: Any): String {
        return json.writeValueAsString(data)
    }

    fun  readMap(jsonData: String): Map {
        return json.readValue(jsonData, object : TypeReference>() {})
    }

    fun  readMap(jsonData: ByteArray): Map {
        return json.readValue(jsonData, object : TypeReference>() {})
    }

    fun readJsonNode(jsonData: String): JsonNode {
        return json.readTree(jsonData)
    }

    fun  readObj(jsonData: String, kClass: KClass): T {
        return json.readValue(jsonData, object : TypeReference() {
            override fun getType(): Type {
                return kClass.java
            }
        })
    }

    fun  readObj(byteArray: ByteArray, kClass: KClass): T {
        return json.readValue(byteArray, object : TypeReference() {
            override fun getType(): Type {
                return kClass.java
            }
        })
    }

    fun  readObj(treeNode: TreeNode, kClass: KClass): T {
        return json.treeToValue(treeNode, object : TypeReference() {
            override fun getType(): Type {
                return kClass.java
            }
        })
    }

    fun createArrayNode(): ArrayNode {
        return json.createArrayNode()
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy