json反射java对象_Jackson通过反射将Json转化为java对象

Jackson的功能比较强大,我们这里主要使用Data Binding的方式,来看看如何使用反射将json转化为java bean,先加入如下依赖:

56e3c34db7a47547aced347ea1e30615.png

Jackson 的核心模块由三部分组成。

jackson-core,核心包,提供基于"流模式"解析的相关 API,它包括 JsonPaser 和 JsonGenerator。 Jackson 内部实现正是通过高性能的流模式 API 的 JsonGenerator 和 JsonParser 来生成和解析 json。

jackson-annotations,注解包,提供标准注解功能;

jackson-databind ,数据绑定包, 提供基于"对象绑定" 解析的相关 API ( ObjectMapper ) 和"树模型" 解析的相关 API (JsonNode);基于"对象绑定" 解析的 API 和"树模型"解析的 API 依赖基于"流模式"解析的 API。

然后我们就可以写个demo看看:

1a0473d3c8f66c145ff4e97087dfd807.png

输出:

703f8c2ef4d078c5c6eb329cfb14f611.png

入参都是类似的,传入json字符串和需要转化为的class,然后看看里面的方法是怎么处理的,之前还有很多预处理的方法,直接跳过吧,主要看看里面的解析的。先用createUsingDefault(DeserializationContext ctxt)返回一个使用默认构造方法创建的对象。

c448973d207cde9f70fe8d8708412036.png

abd804c41e8c61d4053f18bc1c851f89.png

这里对于json的处理都放在JsonParser中,这里获取相应的类中的变量,然后使用deserializeAndSet方法设置值,现在觉得反射真是一个好东西呀,不然都不好处理,尤其是不知道都是什么类对象的情况,当然这里只是简单类对象的情况,复杂的后续再看看。

96c8d64de9fce39687ac0d404f5c17e7.png

这里最后调用的_setter.invoke(instance, value)来设置变量值。

后续还会有一些检查,未完待续!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值