面对复杂的json对象,一个json对象嵌套四五层,而且其中的数据类型可能是基本数据类型,对象,数组,map和list。对于这种情况,基本的json的jar包已经不能满足这些复杂的需求,需要用到阿里巴巴提供的fastjson的jar包,涉及到2个jar包

fastjson-1.2.21-sources.jar
fastjson-1.2.21.jar

json 中用到的数据类型

1基本数据类型 : String, int,Integer等等;
2.对象类型:复杂的数据类型要创建对象,比如对象issue,Fields,
3.List类型:对应存在多条数据,比如变量issues对应可定义为 List<issue>
4.Map类型:有些数据我们不想深入处理,可以定义为Map类型,比如变量creator的类型为Map<String,String>

对于要解析的数据

**花括号{}包裹的数据类型可以定义为一个对象Object或者map;

中括号[]包裹的数据类型可以定义为一个数组或者list,对于其中的每个元素可以定义为一个对象,即为List

同时另外对于有些数据我们用不到,而且嵌套很多层,我们可以定义一个map的数据类型,不再对其做深入处理即可, 类似Map<String,String>**

举个例子:图1是在网上的json解析网站解析数据后的数据格式,图2是对应该json数据的Java对象,其中对于expand,startAt,maxResults,total这些类型可以设定为基本数据类型,对于issues,我看到时中括号[]形式,可以设定为数组或者list形式,由于issue的数据很复杂,还是设定为list形式,对于issue设置为一个对象(图3,图4)。接下来我们介绍对象issue,根据数据格式判断,expand,id,self,key都是基本类型数据,对于Fields属性的数据结构复杂,所以设计Fields为对象类型(图5)。对于对象Fields着重讲述几个复杂的类型(图 6),比如components的最外层是中括号[],我们定义其为列表list类型,对于components中的每个元素定义为map-Map<String,Object>类型,由于其中的key可以确定是字符串,key值的类型可以设置为String,map的value值不确定是什么类型,所以设定为Object Map<String,Object> 。对于有些数据我们的实际需求用不到,我们可以直接把它定义为Map类型,不做深入的解析,比如Map<String,String> creator

jsonarray tojavalist 复杂类 复杂json解析_数据


jsonarray tojavalist 复杂类 复杂json解析_数据类型_02


jsonarray tojavalist 复杂类 复杂json解析_数据_03


jsonarray tojavalist 复杂类 复杂json解析_json_04


jsonarray tojavalist 复杂类 复杂json解析_数据_05


jsonarray tojavalist 复杂类 复杂json解析_数据类型_06