首页 > 学院 > 开发设计 > 正文

JSON用法总结

2019-11-06 09:29:42
字体:
来源:转载
供稿:网友

1. JSON是什么

JSON(javaScript Object Notation)是一种轻量级的数据交换格式,本质就是具有特定格式的字符串,常用于客户端和服务器端交换数据。


2. JSON数据格式

json数组:[value1, value2, value3] ,对应Java里的数组或list

json对象:{key1:value1, key2:value2, key3:value3},对应Java里的Map或自定义对象

key数据类型:字符串 value数据类型:数值、字符串、null、json数组[]、json对象{} 例如:[1, “ab”, [], {“n”:123, “b”:”abc”}]


3. 解析方式

3.1 Android原生API

JsonObject:json对象{} JSONObject(String json):将json字符串解析为json对象 Xxx getXxx(String name):根据name,在json对象中得到对应的valueJsonArray:json数组[] JSONArray(String json):将json字符串解析为json数组 int length():得到json数组中元素的个数 Xxx getXxx(int index):根据下标得到json数组中对应的元素数据

3.2 Gson框架

Gson():构造对象的方法 String toJson(Object src):将对象转换为对应格式的json字符串 T fromJson(String json, Type typeOfT):解析Json字符串,得到对象TypeToken<T>:用来得到Type的类

4. JSON字符串转换为Java对象

4.1 使用原生API

String jsonString = "{/"id/":1, /"name/":/"one/", /"grade/":100}";// 1.将json字符串转换为JSONObject对象JSONObject jsonObject = new JSONObject(jsonString);// 2.根据key得到相应的valueint id = jsonObject.getInt("id");String name = jsonObject.getString("name");int grade = jsonObject.getInt("grade");// 3.封装为Student对象Student student = new Student(id, name, grade);

4.2 使用GSon

String jsonString = "{/"id/":1, /"name/":/"one/", /"grade/":100}";Student student = new Gson().fromJson(jsonString, Student.class);

5. JSON字符串转换为Java对象的List

5.1 使用原生API

String jsonString = "[{/"id/":1, /"name/":/"one/", /"grade/":100}, {/"id/":2, /"name/":/"two/", /"grade/":99}]";List<Student> list = new ArrayList<Student>();// 1.将json字符串转换为JSONArray对象JSONArray jsonArray = new JSONArray(jsonString);// 2.遍历JSONArray对象所有元素,将每个元素封装为Student对象for(int i = 0; i < jsonArray.length(); i++){ JSONObject jsonObject = jsonArray.getJSONObject(i); // 3.根据key得到相应的value int id = jsonObject.getInt("id"); String name = jsonObject.getString("name"); int grade = jsonObject.getInt("grade"); // 4.封装为Student对象 Student student = new Student(id, name, grade); // 5.添加到List中 list.add(student);}

5.2 使用Gson

String jsonString = "[{/"id/":1, /"name/":/"one/", /"grade/":100}, {/"id/":2, /"name/":/"two/", /"grade/":99}]";List<Student> list = new Gson().fromJson(jsonString, new TypeToken<List<Student>>(){}.getType());

6.使用Gson将Java对象转换为json字符串{}

Student student = new Student(1,"one",100);String jsonString = new Gson().toJson(student);

7.使用Gson将Java对象的List转换为json字符串[]

List<Student> list = new ArrayList<Student>();list.add(new Student(1,"one",100));list.add(new Student(2,"two",99));String jsonString = new Gson().toJson(list);

8.使用Map封装json对象key的特殊情况

当一些json字符串中的对象属性名很特殊,如包含空格或仅为数字时,不能直接将json字符串转换为Java对象,而是要将其转换为Map:

String jsonString = "{/"my id/":1, /"my name/":/"one/", /"my grade/":100}"; Map<String, Object> map = new Gson().fromJSon(jsonString, new TypeToken<Map<String, Object>>(){}.getType());

注明:博客整理自网络视频


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表