json型字符串取值
1 | public String getMsg(String msg){ |
Gson
都8012年了我还用这么原始的方法嘛,如果遇到了bean怎么办,有更好的工具:Gson和Jackson,这里只讲Gson。Gson提供了fromJson()
和toJson()
两个直接用于解析和生成的方法,前者实现反序列化,后者实现了序列化。
Serialization:序列化,使Java对象到Json字符串的过程。
Deserialization:反序列化,字符串转换成Java对象。
1 | //最简单的用法 |
但序列化和反序列化的过程中,期望的驼峰格式会被转成实际的下划线格式,解决这个问题可以用@SerializedName注解,在实体类定义属性的时候加:
1 | "email_address") ( |
如果接收的格式不止两种,还可加alternate参数,可以看做是给属性加多个“别称”
1 | "emailAddress", alternate = {"email", "email_address"}) (value = |
除了Object,基本数据类型的json生成与解析也是可以的,只是意义不大。另外还可对List、Map、Set等,一一来研究:
温馨提示:如若需要频繁操作,直接创一个gson对象,以免不必要的资源浪费,但我比较懒,所以下面写的都是new Gson().balabala,后面我会总结一个工具类,这里就当个demo看看
List转化
1 | //这是一个带泛型的list,我们想把它转为json |
Map转化
1 | //这是一个普通的Map,我们把key定义为string,value定义为一个Object |
Set转化
1 | //这是一个简单的Set,里面存的是String |
GsonUtil
吼啦,贴一个自己用的GsonUtil,只写了一个转化list的,因为我只用到了这个,以后用到了再加
1 | import com.google.gson.Gson; |
##Jackson
大概一个月前整理了一个Gson的用法,但只会Gson怎么够呢,我得看得懂其他人的代码呀,嘿,事实上现在的我就是这样,不同的人给我他们的代码,让我加东西的时候我总要模仿他们的写法,比如有些人不爱写长注释,有些人用Gson而有些人用Jackson…
为了把json数据映射到对象上,你需要:有一个包含你需要的属性值的实体类,类的属性名称与json中的key一一对应,若遇到大小写混乱或下划线的用@JsonProperty(“xxx”)标在属性上
接下来,你可以包装一个jackson的工具类,主要用Jackson ObjectMapper对象
1 | public class JacksonJsonUtil { |