JSON 的全称是 JavaScript Object Notation ,也就是 JavaScript 对象表示法JSON 是存储和交换文本信息的语法,类似 XML ,但是比 XML 更小、更快,更易解析JSON 是轻量级的文本数据交换格式,独立于语言,具有可描述性,更易理解,对象可以包含多个名称 /值对,比如:{"name":"zhangsan" , "age":25}
json简单说就是对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构
1 、对象:对象表示为 “{}” 扩起来的内容,数据结构为{key : value,key : value,...} 的键值对的结构,在面 向对象的语言中,key 为对象的属性, value 为对应的属性值,所以很容易理解,取值方法为 对象 .key 获 取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。2 、数组:数组在 json 中是中括号 “[]” 扩起来的内容,数据结构为 ["java","javascript","vb",...] ,取值方式和 所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。经过对象、数组 2 种结构就可以组合成复杂的数据结构了。
1 , SDK 提供JSONArray, JSONObject2 , google 提供的 Gson通过fromJson() 实现对象的反序列化(即将 json 串转换为对象类型)通过toJson() 实现对象的序列化 (即将对象类型转换为json 串)
使用谷歌的GSON包进行解析,在 Android Studio 里引入依赖:
compile 'com.google.code.gson:gson:2.7'
值得注意的是实体类中变量名称必须和json中的值名字相同。
使用示例:1 、解析成实体类:Gson gson = new Gson(); Student student = gson.fromJson(json1, Student.class);
2 、解析成 int 数组:Gson gson = new Gson(); int[] ages = gson.fromJson(json2, int[].class);
3 、直接解析成 List.Gson gson = new Gson(); List<Integer> ages = gson.fromJson(json2, newTypeToken<List<Integer>>() {}.getType); Gson gson = new Gson(); List<Student> students = gson.fromJson(json3, newTypeToke<List<Student>>() {}.getType);
优点:
- 轻量级的数据交换格式
- 读写更加容易
- 易于机器的解析和生成
缺点:
- 语义性较差,不如 xml 直观
————————————————
版权声明:本文为CSDN博主 CongPong 的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/CongPong/article/details/125891899