JSON的使用及与java对象之间的转换介绍
来源:互联网 发布:如何在淘宝上买东西 编辑:程序博客网 时间:2024/06/05 14:28
toJson
gson的方法可以分为两类:将对象转换为json,将json解析为对象。
toJson(Object,Appendable):将json串生成到指定的位置。第二个参数比较常见的如StringBuffer,StringBuilder以及Writer和它的子类。
toJson(Object):将obj转换为json数据,不能处理基本数据类型,但obj的成员变量可以是基本数据类型。对于集合,返回的是[];对于普通的对象,返回的是{}。
调用的是第一个方法,传入的是StringWriter,所以该方法返回的是String,而上一个方法无返回值。示例如下:
toJson(Object,Type):type指的是obj的Type类型。平时用的非常少。
toJson(JsonElement):将一个JsonElement转换为str对象。
toJson(JsonElement,Appendable):将一个JsonElement转换成的str写入到指定的位置。
toJsonTree(Object):将obj转换为一个JsonElement。如果对象不是集合,则得到的JsonElement是JsonObject,否则是JsonArray。
fromJson
fromJson(Sting,Class):将string转换为一个对象。可直接用于将一个JsonObject转换为对象(非集合)。但将一个JsonArray转换为集合时,使用该方法会报错,错误信息如下:
其主要原因是泛型在运行时会被擦除,所以gson在解析str时无法得知具体的泛型类型。解决方法有二:
1,可以转换为数组的形式:
2,使用GSON提供的TypeToken,如下:
上述方法凡在涉及到泛型时,都会出现总是,不单单是List。如下:
Outer是一个含有泛型的类,如果不使用TypeToken的方式,得到的outer对象将不会将看成一个对象。而使用了TypeToken后,T自动被替换成了Inner对象。
fromJson(JsonElement,Class):将一个json对象转换为需要的对象。具体处理方式同上。
JsonOblect
addProperty():为obj添加一个属性。
add():向obj中添加一个JsonElement对象。
getAsJsonArray():将属性转换为一个JsonArray对象。
getAsJsonPrimitive():转换为基本数据类型,可以通过内容的isXX以及getAsXXX获取相应的值。
getAsXXX():虽有这些方法,但都没有实现。所以不能用。JsonArray
getAsXXX():转换为自己需要的数据,但数组内部只能有一个元素,否则就会报错。
size():长度。
JsonObject与Map
使用Gson时,可以将一个JsonObject对象通过一个Map来接收,Map的key就是JsonObject中的key,value就是JsonObject中对应的value。如下:
输出结果为:
从中可以看出,每一个s对应的JsonObject都是被一个Map给接收了。并且接收时key,value都是一一对应的。
就实质上来说,JsonObject本身就是key-value对,能用Map接收也完全说得通。
总结
string,JsonElement,Object转换如下:
1,object到string——toJson()
2,object到JsonElement——toJsonTree()
3,JsonElement到string——toJson()
4,JsonElement到Object——fromJson()
5,string到Object——fromJson()
6,string到JsonElement——无
- JSON的使用及与java对象之间的转换介绍
- JSON 与JAVA对象之间的转换
- JSON 与JAVA对象之间的转换
- java对象与json之间的转换
- java对象与json对象之间的相互转换
- Java对象与json对象之间的转换
- Java之使用json-lib进行对象与json字符串之间的转换
- Java之使用json-lib进行对象与json字符串之间的转换
- Java之使用json-lib进行对象与json字符串之间的转换
- java--09--对象与JSON与Map之间的转换
- 使用Jackson做对象与json之间的相互转换
- JSON字符串与Java对象之间的转换
- JSON字符串与Java对象之间的转换
- JSON字符串与Java对象之间的转换
- Java中json 字符串与对象之间的转换
- JSON与java对象之间的相互转换
- Json格式与java对象之间的转换
- Java对象和集合与Json之间的互相转换
- sed详解
- 设备树知识dts
- IDEA下载,安装
- Javascript模块化编程(一):模块的写法
- Android 玩机
- JSON的使用及与java对象之间的转换介绍
- Java 反射教程
- Web安全测试之跨站请求伪造(CSRF)
- 226.InvertABinaryTree
- 文章标题
- Java中<? extends T>和<? super T>的理解,泛型的使用规则
- 题目:生日蜡烛
- 线程与进程的区别
- redis启动报错