首页 > Web开发 > 详细

Jackson JSON 序列化 反序列化

时间:2019-10-14 14:17:12      阅读:82      评论:0      收藏:0      [点我收藏+]

什么是 Jackson ? https://github.com/FasterXML/jackson

Jackson 主要由以下几个包组成

1. Jackson Databind 数据绑定包, 提供基于"对象绑定" 解析的相关 API ( ObjectMapper ) 和"树模型" 解析的相关 API (JsonNode);基于"对象绑定" 解析的 API 和"树模型"解析的 API 依赖基于"流模式"解析的 API
2. Jackson Core 核心包,提供基于"流模式"解析的相关 API,它包括 JsonPaser 和 JsonGenerator。 Jackson 内部实现正是通过高性能的流模式 API 的 JsonGenerator 和 JsonParser 来生成和解析 json
3. Jackson Annotations 注解包,提供标准注解功能

Kotlin 插件 -- jackson-module-kotlin https://github.com/FasterXML/jackson-module-kotlin

该模块增加了对Kotlin类和数据类的序列化/反序列化的支持。
Jackson的附加模块,用于支持Kotlin语言,特别是方法/构造函数参数名称的自省,而无需添加显式的属性名称注释。
该模块增加了对Kotlin类和数据类的序列化/反序列化的支持。以前,必须在Kotlin对象上存在默认构造函数,以便Jackson可以反序列化到该对象中。
使用此模块,可以自动使用单个构造函数类,还支持具有辅助构造函数或静态工厂的类。

快速开始 -> ObjectMapper

databind.ObjectMapper 是 Jackson 提供序列化和反序列化的主要的类, 其继承关系 public class ObjectMapper extends ObjectCodec implements Versioned

import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.databind.SerializationFeature

data class User(val name: String = "Unknown", val age: Int = 0)

var mapper = ObjectMapper()

fun main(args: Array<String>) {
    usage()
    mapper.enable(SerializationFeature.INDENT_OUTPUT) // 应用缩进, 增强可读性
    usage()
}

fun usage() {
    var json = """{"name":"诸葛孔明"}"""
    val syokaku = mapper.readValue(json, User::class.java)
    println("反序列化 $json ->\n$syokaku")

    val ryubi = User("刘备", 38)
    json = mapper.writeValueAsString(ryubi)
    println("序列化 $ryubi ->\n$json")
}

/*
反序列化 {"name":"诸葛孔明"} ->
User(name=诸葛孔明, age=0)
序列化 User(name=刘备, age=38) ->
{"name":"刘备","age":38}
反序列化 {"name":"诸葛孔明"} ->
User(name=诸葛孔明, age=0)
序列化 User(name=刘备, age=38) ->
{
  "name" : "刘备",
  "age" : 38
}
*/

Jackson JSON 序列化 反序列化

原文:https://www.cnblogs.com/develon/p/11670924.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!