GSON的使用
来源:互联网 发布:西安软件新城二期 编辑:程序博客网 时间:2024/06/16 00:39
JSON介绍
Json 全称 JavaScript Object Natation,用来描述数据结构,它是基于纯文本的数据格式,是一种轻量级的数据交换格式。广泛应用于服务端与客户端的数据交互。
格式
Json 以 key-value的形式存储数据;
Key的取值为 String
类型;
Value的取值为 String
,boolean
,Number
,数组
,Object
,null
;
Json串以 {
开始,以 }
结尾;
Json串中 数组
是以 [
开始,以 ]
结尾;
Json串中 Object
是以 {
开始,以 }
结尾;
· 案例
基本类型 :
{
"name": "
张三
",
"age": 18,
"sex": true
}
数组类型 :
[
{
"name": "
张三
",
"age": 18,
"sex": true
},
{
"name": "
李四
",
"age": 19,
"sex": false
}
]
对象嵌套 :
{
"name": "teacher",
"computer": {
"CPU": "intel7",
"disk": "512G"
},
"students": [
{
"name": "
张三
",
"age": 18,
"sex": true
},
{
"name": "
李四
",
"age": 19,
"sex": false
}
]
}
· 树状结构
json 字符串相当于一个倒挂的树, key相当于树的节点.
Gson下载
网址 http://mvnrepository.com/artifact/com.google.code.gson/gson
Gson解析和格式化
将 java对象格式化为 Json字符串.
· 实现步骤 :
获得需要的对象:
Student stu = new Student();
stu.setName("
张三
");
stu.setAge(18);
stu.setSex(true);
格式化
Gson gson = new Gson();
//
将
对象
转化成
json
字符串
String json = gson.toJson(stu)
Gson解析
将 Json字符串解析成 java对象.
Gson的节点对象:
JsonElement
:所有的节点都是 JsonElement对象.
JsonPrimitive
:基本的数据类型的节点对象, JsonElement的子类.
JsonNull
:代表空节点对象,即有 key,value为空,JsonElement的子类.
JsonObject
:对象数据类型的节点对象, JsonElement的子类.
JsonArray
:数组数据类型的节点对象, JsonElement的子类.
JsonElement的取值:
JsonPrimitive
:value的取值对应 java
int,double,float,long,short,boolean,char,byte,String,BigDecimal,BigInteger,Number
JsonObject
: value的取值对应 java的 Object对象.
JsonArray
: value的取值对应 java的 List及其子类对象.
Json的解析成 java对象
json:
{'name':'
张三
','age':18,'sex':true}
代码:
Gson gson = new Gson();
//
将
json
转化成
java
对象
Student stu = gson.fromJson(json, Student.class);
Json 解析成 List
json:
[{'name':'
小
1','age':18,'sex':true},{'name':'
小
2','age':19,'sex':false},{'name':'
小
3','age':20,'sex':true},{'name':'
小
4','age':21,'sex':false},{'name':'
小
5','age':22,'sex':true}]
代码:
Gson gson = new Gson();
//
将
json
转化
成
List
泛型
List<Student> stus = gson.fromJson(json, new TypeToken<List<Student>>() {}.getType());
Json 解析成 map
json:
{'
小
3':{'name':'
小
3','age':20,'sex':true},'
小
4':{'name':'
小
4','age':21,'sex':false},'
小
5':{'name':'
小
5','age':22,'sex':true},'
小
1':{'name':'
小
1','age':18,'sex':true},'
小
2':{'name':'
小
2','age':19,'sex':false}}
代码:
Gson gson = new Gson();
//
将
json
转化
成
Map
泛型
Map<String,Student> map = gson.fromJson(json, new TypeToken<Map<String,Student>>() {}.getType());
Json 节点的解析
json:
{'flag':true,'data':{'name':'
张三
','age':18,'sex':true}}
步骤 :
获得解析者
JsonParser parser = new JsonParser();
获得根节点元素
JsonElement element = parser.parse(json);
根据文档判断根节点属于什么类型的 Gson节点对象
//
假如文档
显示
根节点
为对象类型
//
获得
根节点
的实际
节点类型
JsonObject root = element.getAsJsonObject();
取得节点下的某个节点的 value
//
获得
flag
节点的值
, flag
节点为基本数据节点
JsonPrimitive flagJson = root.getAsJsonPrimitive("flag");
//
基本节点取值
boolean flag = flagJson.getAsBoolean();
获得
data
节点的值,
data
节点为
Object
数据节点
JsonObject dataJson = root.getAsJsonObject("data");
将节点上的数据转换为对象
Student stu = new Gson().fromJson(dataJson,Student.class);
- Google-Gson的使用
- gson的使用
- Gson的使用
- android gson的使用
- android Gson的使用
- Gson的使用
- gson的使用
- Gson的使用汇总
- Gson的使用
- java gson的使用
- gson的使用
- Gson的使用
- Google Gson的使用
- Gson的嵌套使用
- Gson的使用
- Gson的详细使用
- gson的使用
- Gson的使用
- 路由到交换机原理
- 用mysql查询某字段是否有索引
- Android中App Bar的使用
- poj3984
- stl 源码剖析 1-9-5
- GSON的使用
- CI框架整合Smarty模板时包含css,js文件的解决方法
- ios后台多任务管理机制
- iOS _UISlider 两边有间隙解决方法
- java学习之消费者和生产者问题
- Android Https相关完全解析 当OkHttp遇到Https
- nginx概念理解
- java io理解
- Android 5.0 Service Intent must be explicit