JSON(JavaScript Object Notation)是一 种轻量级的数据交换格式。
JSON官网:http://www.json.org
JSON数据格式的特点
JSON建构于两种结构:
- 1、“名称/值”对的集合
- 2.、值的有序列表(数组)
JSON表示名称/值对的方式:
{
"firstName": "vince", "lastName'"." ma", "email":"finally_ _m@ foxmail.com" }
一个大括号代表一个对象,属性要用双引号,属性值字符串用双引号,整数小数不需要双引号
表示数组
{
"user": [{
"firstName": "vince",
"lastName": "ma",
"email": "finally_m@foxmail.com"
},
{
"firstName": "lin",
"lastName": "jacks",
"email": "jacks @qq.com"
}
]
}
GSON组件的使用
GSON是Google开发的Java API,用于转换Java对象和Json对象。
下载地址:http://www.mvnrepository.com/artifact/com.google.code.gson/gson
解析JSON:JsonReader reader = new JsonReader(new StringReader(jsonData));
生成JSON:
private String createJSON(ArrayList<User> users) {
JSONObject jsonObject = new JSONObject();
JSONArray array = new JSONArray();
int size = users.size();
try {
for (int i = 0; i < size; i++) {
User user = users.get(i);
JSONObject object = new JSONObject();
object.put("name", user.name);
object.put("age", user.age);
array.put(object);}
jsonObject.put("users",array);
return jsonObject.toString();
} catch (JSONException e) {
e.printStackTrace();}
return null;
}
static class User {
String name; int age;//…}
使用 Gson 直接把 JSON 数据转换成 Java 对象
public Student parserJSON2(String data){
Gson gson = new Gson();
Student s = gson.fromJson(data, Student.class);
return s;
}
使用 Gson 直接把 JSON 数组转换成 Java 对象
public List<Student> parserJSON3(String data){
Type type = new TypeToken<ArrayList<Student>>(){
}.getType();
Gson gson = new Gson();
List<Student> list = gson.fromJson(data, type);
return list;
}
XML与JSON的比较
从以下6点比较JSON与XML:
1、JSON和XML的数据可读性基本相同
2、JSON和XML同样拥有丰富的解析手段
3、JSON相对于XML来讲,数据的体积小
4、JSON与JavaScript的交互更加方便
5、JSON对数据的描述性比XML较差
6、JSON的速度要远远快于XML
适合的场景:
(1)数据传输:JSON要比XML更有优势
(2)存储数据:XML描述性更强
(3)XML通常用做配置文件
解析简单数组示例:
package com.json;
import com.google.gson.stream.JsonReader;
import org.junit.jupiter.api.Test;
import java.io.IOException;
import java.io.InputStream;
import