一:json及java对象的对应关系(分析json)。
1.json示例;
2.json的构成。
Json总体来说是一串有结构的字符串String,从形式来看,它是多个{}组和[]组嵌套成一个大{}的结构,从数据上来说它是由多个对象和对象数组构成的一个大对象。每对{}包含的是一个对象,每对[]包含的是一个或多个对象形成对象数组。被包含在中间的单层{}结构中间的是键值对,多个键值对构成最基本的对象单元,外层的{}对就是由键值对和里层的对象构成。此外,每个{}包括其内容单独拿出来都是标准json格式,我们也叫它JSONObject.
按上图所示json来分析:它一共有4对{},一对[],说明这个json存在4个对象和一个数组。数组当然是存在对象中,但数组个数与包含数组的对象个数无必然联系。
最外层的大括号是大对象JSONObject,取个名字叫json吧,它里面是results,但是results对象的{}外边是[],也就是说这有一个数组,存在一个或多个results对象,所以最外边的json对象是一个results的数组或list,再看results JSONObject对象,它包括一个location对象、一个now对象以及一组键值对。Location对象和now对象都是由单纯的键值对构成了。
总结就是此json包括json、results、location、now四个对象,其中json内容是results对象的数组或列表。
3.java对象的构成。
Java对象就是多个属性的集合,是对具有相同属性的事务的概括,是对这些相同属性的概括。其中属性也可以是别的对象。属性也可以是列表和数组。
这样看来java对象和json中的JSONObject对象结构是很相似的。但它们之间有什么相应的联系呢?
4.java对象与JSONObject之间的映射关系。
首先,json全部转化成java对象的话,那么所有的json包含的所有JSONObject对象当然对应着一个java对象,即每个{}对应一个java对象,此外要注意除了总得那个大对象可以随意命名之外其他的对象都要和json结构中的名字对应起来,每个对象的属性值都要和json中对应的key或者{}外边的名字一样)最里层的对象的属性值也必须和对应的键值对中的key的名称一致。
注意我们在创建json时不必每一个属性都写上。但是如果我们需要用到某一层的数据,那么它及它所有的外层的对象都必须要被创建。
有时候我们甚至不需要创建java对象,只是将json中的数据取出来用一下。
有时候我们并没有根据json创建java对象,我们把我们需要的数据取出来在封装到java对象中去。
实际上我们实际开发中所要用到的java对象和JSONObject对象并不完全一致,我们可能只是需要json中的一些数据而已,或者说json完全转化成的java对象并不符合我们我们在项目中的使用需要。所以我们要根据实际情况创建java对象,并根据需要转换json。
具体方法下次再说。