单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,JSON,2025/3/20,14,2025/3/20,认识,JSON,JSON,核心解析类,目录,CONTENT,1,2,JSON,解析工具:,Gson,3,参考教材,:Android,应用开发项目化教程,认识,JSON,特点,JSON,(,JavaScript Object Notation,)是一种轻量级的数据交换格式具有良好的可读和便于快速编写的特性,同时也易于机器解析和生成,非常适合于服务器与客户端的交互JSON,采用与编程语言无关的文本格式,业内主流技术为其提供了完整的解决方案(有点类似于正则表达式),从而可以在不同平台间进行数据交换JSON,采用兼容性很高的文本格式,同时也具备类似于,C,语言体系的行为1,认识,JSON,数据结构,Map,Map,结构也称为对象,以键值对的形式给出,键和值之间用“:”隔开,两个,Map,之间用“,”隔开,一般表示形式如下:,key1:value1,key2:value2,1,认识,JSON,数据结构,Array,Array就是普通意义上的数组,一般形式如下:,arr1,arr2,arr3;,1,认识,JSON,数据,格式,对象(,Object,):一个对象以,“,”,开始,并以,“,”,结束。
一个对象包含一系列非排序的键值对,每个键值对之间使用,“,”,分隔名称,-,值(,Collection,):名称和值之间使用,“,:,”,隔开,一般的形式是:,name:value,数组(,Array,):使用,包含所有元素,每个元素用逗号分隔,元素可以是任意的,Value,字符串(,String,):以,括起来的一串字符数值(,Number,):一系列,0-9,的数字组合,可以为负数或者小数布尔值(,Boolean,):表示为,true,或者,false,1,JSON,核心解析类,org.json,Android的JSON解析部分都在包org.json下,,,提供:,JSONObject,JSONStringer,JSONArray,JSONTokener,SONException,JSONString,JSONWriter,JSONReader,2,JSON,核心解析类,org.json,JSONObject,JSONObject是一个无序的键值对的集合,可以看作是一个JSON对象,这是系统中有关JSON定义的基本单元它的外在形式是一个用大括号包裹,并用冒号将名字和值分开的字符串内部形式就是一个对象。
JSONObject,提供了一系列的,get,、,set,和,opt,方法来访问,JSONObject,实例这些值的类型可以是,Boolean,、,JSONArray,、,JSONObject,、,Number,、,String,或者默认值,JSONObject.NULL,对象2,JSON,核心解析类,org.json,JSONStringer,JSONStringer是JSON文本构建类,用于帮助快速和便捷的创建JSON文本其最大的优点在于可以减少由于格式的错误而导致程序异常,引用这个类可以自动严格按照JSON语法规则创建JSON文本每个JSONStringer实体只能对应创建一个JSON文本2,JSON,核心解析类,org.json,JSONArray,JSONArray,代表一组有序的数值表现形式是用方括号包裹,数值以逗号,分隔(例如:,value1,value2,value3,)这个类的内部同样具有查询行为,通过,get(),和,opt(),两种方法都可以根据,index,索引返回指定的数值,,put(),方法用来添加或者替换数值这个类和,JSONObject,支持相同的数据类型。
2,JSON,核心解析类,org.json,JSONTokener,JSONTokener,是系统为,JSONObject,和,JSONArray,构造器的解析类,它可以从源信息中提取数值信息2,JSON,核心解析类,org.json,SONException,JSONException是json.org类抛出的异常信息当语法错误或者过程异常的时候,会抛出JSONException异常以下情况下会产生,JSONException,:,试图解析或构建一个格式错误的,JSON,文档使用,null,作为关键词使用不提供给,JSON,数值类型,如,NaN,或无穷大的使用不存在的键进行查找类型不匹配的解析2,JSON,核心解析类,org.json,JSONString,JSONString是一个接口,以便其他类可以通过实现该接口的toString()方法来改变JSONObject、JSONArray等内部toString()方法的功能,以实现他们自己的序列化2,JSON,核心解析类,org.json,JSONWriter,JSONWriter位于android.util包下,是一个快速将JSON文本写入数据流的工具。
每次只能输出一个字符串流中既包括文字值(字符串、数字、布尔值和空值),也包括作为对象、数组的开始和结束标志的分隔符2,JSON,核心解析类,org.json,JSONObject,JsonReader,位于,android.util,包下,主要用来读取,JSON,字符串的内容2,JSON解析工具:Gson,来源,Gson,是,Google,提供的一个轻量级的,JSON,转换类库,在,Java,平台可以方便的将一个,Java,对象转换成,JSON,格式,也可以将,JSON,格式的字符串转换成,Java,对象3,JSON解析工具:Gson,核心类,Gson,使用Gson的主类,构造Gson类的实例后,可使用toJson(Object)方法将Bean里面的内容转换为JSON内容,使用fromJson(String,Class)方法将JSON对象封装出一个一个的Bean对象3,JSON解析工具:Gson,核心类,GsonBuilder,用于创建Gson的实例,和使用new Gson()不同的是,GsonBuilder可进行与默认配置不同的相关设置3,JSON解析工具:Gson,核心类,TypeToken,实现了获取泛型类型的功能,使用方法Type=TypeToken(泛型).gettype()将会返回一个反射包下的type对象,这就是fromJson()所需要的type类型。