JSON解析
JSON
定义
JSON是轻量级的基于JavaScript编程语言,使用键值对封装数据的数据交换格式。
外延
- JSONObject (JSON对象)
- JSONArray (JSON数组)
特点
- 轻量级易传输
- 跨平台支持多种语言
- 采用了压缩技术节省宽带
- 格式简单易读写
JSONObject
定义
JSONObject是以键值对方式存储数据的Json对象。
语法结构
JSONObject使用步骤
JSONArray
定义
JSONArray是多个Json对象组成的Json数组。
语法结构
使用JSONArray
案例:解析JSON数据,显示在Spinner控件中
Gson解析
使用Gson的原因
当数据结构比较复杂时,使用Gson解析可以大大提高解析效率,弥补JSON解析的弊端。
定义
Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的Java 类库。
安装GsonFormat插件
Gson的常用方法
Gson解析的步骤
使用Gson
依赖
implementation’com.google.code.gson:gson:2.8.0’
Gson解析数组
解析代码如下:
创建对应实体类:
public class Bean {
public String name;
public int age;
public String sex;
public String address;
}
解析代码:
String strJson = "[\n" +
" {\n" +
" \"address\": \"中国\",\n" +
" \"age\": 30,\n" +
" \"name\": \"小明\",\n" +
" \"sex\": \"boy\"\n" +
" },\n" +
" {\n" +
" \"address\": \"加拿大\",\n" +
" \"age\": 20,\n" +
" \"name\": \"小雨\",\n" +
" \"sex\": \"girl\"\n" +
" }\n" +
"]";
Gson gson = new Gson();//创建Gson对象
JsonParser jsonParser = new JsonParser();
JsonArray jsonElements = jsonParser.parse(strJson).getAsJsonArray();//获取JsonArray对象
ArrayList<Bean> beans = new ArrayList<>();
for (JsonElement bean : jsonElements) {
Bean bean1 = gson.fromJson(bean, Bean.class);//解析
beans.add(bean1);
}
System.out.println(beans.size());
System.out.println(beans.get(1).name);
反过来,如何将对象生成json了,代码如下:
Map<String, Object> map = new HashMap<>();
map.put("name", "小明");
map.put("age", 30);
map.put("address", "中国");
map.put("sex", "boy");
List<Map<String, Object>> list = new ArrayList<>();
list.add(map);
String s = new Gson().toJson(list);//生成jsonString
System.out.println(s);
Gson的特点
- 解析效率高
- 代码量少使用简洁
- 解析是面向对象
- 数据传递比较方便
FastJson
FastJson使用简单,解析速度快,性能高,当JSON数据量比较大时,FastJson是理想的解析方式。
定义
FastJSON是阿里巴巴提供的,用Java语言编写的高性能的JSON类库。
使用步骤
使用FastJSON
依赖
implementation’com.alibaba:fastjson:1.2.55’
FastJSON的特点
JSON(JSONObject JSONArray) Gson解析以及FastJSON解析就先到这了