文章目录
java 中的 Json
什么是 json ?
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。
Json 语法
json 中的有特殊意义的字符
- {} 保存对象
- [] 保存数组
- : 键值对(左键右值,左侧字符串,右侧,字符串 | 数字 | 数组 | 对象 | 布尔 | null)
- , 分隔数据
json 在线解析网站
示例
{
"name": "BeJson",
"url": "http://www.bejson.com",
"page": 88,
"isNonProfit": true,
"address": {
"street": "科技园路.",
"city": "江苏苏州",
"country": "中国"
},
"links": [
{
"name": "Google",
"url": "http://www.google.com"
},
{
"name": "Baidu",
"url": "http://www.baidu.com"
},
{
"name": "SoSo",
"url": "http://www.SoSo.com"
}
]
}
对应的 java 实体类(省略了getter setter)
public class TestBean {
private AddressEntity address;
private boolean isNonProfit;
private String name;
private List<LinksEntity> links;
private int page;
private String url;
public class AddressEntity {
private String country;
private String city;
private String street;
}
public class LinksEntity {
private String name;
private String url;
}
}
json 解析常见类库
java 中解析 json 的常用类库:
- Gson :谷歌出品
- FastJson :阿里巴巴出品
- Jackson : 开源社区活跃
这里,我只用过 Gson。So
使用 Gson 解析 json
将对象,数组,等转为 Json
Gson 中有多个 toJson 的重载方法,Object,List,Map,Set,Array,即调即转。
Gson gson=new Gson();
String[] strings={"1","1","2"};
gson.toJson(strings);
简单 json 解析 (无泛型)
如下所示,未包含泛型的对象,数组,直接使用 formJson(json串,对应class)方法即可。
对象
TestBean bean = gson.fromJson(jsonStr,TestBean.class);
数组
String[] result =gson.fromJson(jsonStr,strings.getClass());
复杂 json 解析 (含泛型)
当解析的 json中包含泛型,需要通过 TypeToken 设置泛型。HashMap ArrayList 等类似。
对象
TestGenericBean<TestBean> testGenericBean = gson.fromJson(jsonStr,new TypeToken<TestGenericBean<TestBean>>() {}.getType());
数组
List<TestBean> list =gson.fromJson(content, new TypeToken<List<TestBean>>() {}.getType());