JSON解析

    xiaoxiao2021-03-25  68

    一、JSON简介 1)概念: JSON的全称是JavaScript Object Notation,是一种轻量级的数据交换格式。 2)特点: (1)本质就是具有特定格式的字符串 (2)JSON完全独立于编程语言 (3)JSON比XML数据传输的有效性要高出很多。 二、JSON数据格式 1)整体结构 String json1 = "{"id":12,"name":"Tom"}"; String json2 = "[{"id":12,"name":"Tom"},{"id":12,"name":"Tom"}]"; 2)Json对象: {} (1)Json对象的结构: {key1:value1, key2:value2, key3:value3} (2)key的数据类型: 字符串 (3)value的数据类型: 数值 字符串 null json数组 [] json对象 {} 3)Json数组 : [ ] (1)Json数组的结构: [value1, value2, value3] (2)value的数据类型: 数值 字符串 null json数组 [] json对象 {} 三、JSON解析技术 1)Android原生技术:(只能解析json没有api生成json) (1)特点 编程相对麻烦 (2)数据之间转换 (1)将json格式的字符串{}转换为Java对象 API: JSONObject(String json) : 将json字符串解析为json对象 Xxx getXxx(String name) : 根据name, 在json对象中得到对应的Value Xxx optXxx(String name) : 根据name, 在json对象中得到对应的Value 注意:optXxx方法会在对应的key中的值不存在的时候返回一个空字符串或者返回 你指定的默认值,但是getString方法会出现空指针异常的错误。 eg: try { JSONObject jsonObject = new JSONObject(jsonStr); if (jsonObject != null) { int id = jsonObject.optInt("id"); String name = jsonObject.optString("name"); double price = jsonObject.optDouble("price"); String imagePath = jsonObject.optString("imagePath"); user = new User(id, name, price, imagePath); } } catch (JSONException e) { e.printStackTrace(); } (2)将json格式的字符串[]转换为Java对象的List API: JSONArray(String json) : 将json字符串解析为json数组 int length() : 得到json数组中元素的个数 Xxx getXxx(int index) : 根据下标得到json数组中对应的元素数据 Xxx optXxx(int index) : 根据下标得到json数组中对应的元素数据 注意: optXxx方法会在对应的key中的值不存在的时候返回一个空字符串或者返回 你指定的默认值,但是getString方法会出现空指针异常的错误。 eg: try { JSONArray jsonArray = new JSONArray(jsonStr); if (jsonArray != null && jsonArray.length() > 0) { for (int i = 0; i < jsonArray.length(); i++) { JSONObject jsonObject = jsonArray.getJSONObject(i); if (jsonObject != null) { int id = jsonObject.optInt("id"); String name = jsonObject.optString("name"); double price = jsonObject.optDouble("price"); String imagePath = jsonObject.optString("imagePath"); user = new User(id, name, price, imagePath); userList.add(user); } } } } catch (JSONException e) { e.printStackTrace(); } 2)Gson框架技术 (1)特点: 编码简洁,谷歌官方推荐 (2)下载地址: https://mvnrepository.com/artifact/com.google.code.gson/gson (3)数据之间转换 (1)将json字符串转换为JavaObject API: gson.fromJson(String json, Class<T> classOfT); 注意: 要求json对象中的key的名称与java对象对应的类中的属性名要相同 步骤 1)添加依赖compile group: 'com.google.code.gson', name: 'gson', version: '2.8.0' 2)创建Gson对象 : Gson gson = new Gson(); 3)通过创建的Gson对象调用fromJson()方法,返回该JSON数据对应的Java对象 Person person = gson.fromJson(jsonStr, Person.class); (2)将json字符串转换为JavaList API: gson.fromJson(String json, Type typeOfT); 步骤 1)添加依赖compile group: 'com.google.code.gson', name: 'gson', version: '2.8.0' 2)创建Gson对象 : Gson gson = new Gson(); 3)通过创建的Gson对象调用fromJson()方法,返回该JSON数据对应的Java集合 List<Person> personList=gson.fromJson(jsonStr,new TypeToken<List<Person>>(){}.getType()); (3)将JavaObject转换为json字符串 API: gson.toJson(Object src); 步骤 1)添加依赖compile group: 'com.google.code.gson', name: 'gson', version: '2.8.0' 2)创建Gson对象 : Gson gson = new Gson(); 3)通过创建的Gson对象调用toJson()方法,返回json数据: Person person=new Person("刘涛","女",28); String jsonStr = gson.toJson(person); (4)将JavaList转换为json字符串 API: gson.toJson(Object src); 步骤 1)添加依赖compile group: 'com.google.code.gson', name: 'gson', version: '2.8.0' 2)创建Gson对象 : Gson gson = new Gson(); 3)通过创建的Gson对象调用toJson()方法,返回json数据: String jsonStr = gson.toJson(personList); 3)FastJson框架技术 (1)特点: Fastjson是一个Java语言编写的高性能功能完善的JSON库。它采用一种“假定有序快速匹。 配”的算法,把JSON Parse的性能提升到极致,是目前Java语言中最快的JSON库 (2)下载地址:(android版) https://github.com/alibaba/fastjson/wiki/Android版本 (3)数据之间转换 (1)将json字符串转换为JavaObject API: JSON.parseObject(String json, Class<T> classOfT); 步骤: 1)添加依赖 compile 'com.alibaba:fastjson:1.1.56.android' 2)JSON调用parseObject()方法,获取转换后的Java对象 例如: Person person = JSON.parseObject(jsonStr,Person.class); (2)将json字符串转换为JavaList API: JSONArray.parseArray(String json,Class<T> classOfT); 步骤: 1)添加依赖 compile 'com.alibaba:fastjson:1.1.56.android' 2)JSON调用parseArray()方法,获取转换后的Java集合 例如: List<Person> personList= JSONArray.parseArray(jsonStr,Person.class); (3)将JavaObject转换为json字符串 API: JSON.toJSONString(Object object); 步骤: 1)添加依赖 compile 'com.alibaba:fastjson:1.1.56.android' 2)JSON调用toJSONString()方法,获取转换后的json数据 例如: Person person=new Person("刘涛","女",28); String jsonStr = JSON.toJSONString(person); (4)将JavaList转换为json字符串 API: JSON.toJSONString(Object object); 步骤: 1)添加依赖 compile 'com.alibaba:fastjson:1.1.56.android' 2)JSON调用toJSONString()方法,获取转换后的json数据 例如: String jsonStr = JSON.toJSONString(personList);

    源码地址:http://download.csdn.net/detail/daidaishuiping/9778683

    转载请注明原文地址: https://ju.6miu.com/read-35762.html

    最新回复(0)