json使用总结

注意:

1)json解析是好事操作,最好不要放到主线程里;

2)Json数据到实体模型之间的转化特别容易出错,特别是数据类型,一定要注意;

3)JSONArray    JSONObject   这两个对象的使用;

4)如何把字符串转化成json对象? new JSONObject(str)

5)如何获取属性的值?  String model = (String) jsonObject.get("model"); 强转类型;

6)定义json数据的时候,最好别使用太多层的嵌套,否则解析可能会出现异常;


 

json字符串转化成json对象和json数组

JsonObject jsonObject=new JsonObject(str)   { ""="", }  属性都是以兼职对的形式存在的

JsonArray jsonArray=new JsonArray(str)   [ ]

 

在线json解析工具:

http://www.bejson.com/json2javapojo/ 

使用的json包:  

compile 'com.google.code.gson:gson:2.5'   

 

Json语法规则:

1)Json属性数据书写格式  “” : ””,  以键值对的形式存放,键和值都要用双引号括起来。

2)某一个属性值可以是boolean类型:“hasCollect”:true,  

3)两个键值对之间,使用逗号分隔。 {"姓名" : "大憨" , "年龄" : 24}

4)一个对象中,可以包含多个属性值。

5{ }  [ ]  对象  数组。 { "firstName": "Brett", "lastName":"McLaughlin" }

6{ "people": [

   { "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" },

   { "firstName": "Jason", "lastName":"Hunter", "email": "bbbb"},

   { "firstName": "Elliotte", "lastName":"Harold", "email": "cccc" }    //没有逗号

]}   //充分体现了属性值是数组

People表示一个键,它的值是数组,其中有三个对象。

数组里面可以包含三个json对象,每个对象都是通过,分割开的。

在面向对象的语言中,key为对象的属性value为对应的属性值,这个属性值的类型可以是 数字、字符串、数组对象几种。

 ——————————————————————————————>

"_status":/ˈsteitəs/,统一返回的请求头,里面是服务器端的响应头信息.比如响应码等等

特别要注意中文与英文引号的区别,出错一般都是在这里

 ——————————————————————————————>

对象在json中表示为“{}”扩起来的内容,数据结构为 {keyvalue, keyvalue,...}的键值对的结构。

数组:数组是中括号“[]”扩起来的内容,数据结构为 ["java","javascript","vb",...],以逗号分隔。

{ "firstName": "Brett" }---->firstName=Brett,等价于

{ "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" }

   { "people": [

   { "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" },

   { "firstName": "Jason", "lastName":"Hunter", "email": "bbbb"},

   { "firstName": "Elliotte", "lastName":"Harold", "email": "cccc" }    //没有逗号

]}   //充分提醒了属性值是数组

 

"学生" : { 

   [

   {"姓名" : "小明" , "年龄" : 23},

   {"姓名" : "大憨" , "年龄" : 24}

   ]

  }

 说明:此Json对象包括了一个学生数组,而学生数组中包含两个学生对象。

(value)可以是双引号括起来的字符串(string)、数值(int)truefalse、 null、对象(object)或者数组(array)。这些结构可以嵌套。

——————————————————————————————>

Json对象:{}   一个json对象可以包含多组属性。

{ "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" }

——————————————————————————————>

json解析异常的处理:后台的数据结构、数据类型一定要确定的、不能经常变更的。

解决方案:后台的数据类型全部都是String类型,到移动端后,自己转换数据类型。

 ——————————————————————————————>

写代码要严谨:

对空指针异常的处理:对控件赋值前,先判断从服务器端获取的数据是否为空。

——————————————————————————————>


——————————————————————————————>

  1) 只需要复制键名就好了,值是从服务器端读取的。
  2) 解析json的时候,每个对象中的属性不完全一样,一定要注意。
  3) 解析json的时候,数据类型千万别写错了,要不然很难查找的。
  5) 集合里面的对象所具有的字段(点开集合,点开其中的某一个对象)
  6) 类与类之间是并列关系
  7)  public List<Integer> extend;里面全是数字  使用Integer类型,集合里面的数据类型
  8) 别忘了添加toString方法比较方便


  接收到服务器端的json字符串,按照json字符串的格式,编写一个模型。
  使用断点调试,查看json对象里面的信息  fromJson()方法的返回值
  把那这种形式看做是对象就好了



public class Object {
//这是两种数据类型   类
public _status st;
public  User  u;

public class _status{
public int _code;
public String _message;
}

public class User{
public  String  uid;
}
}

public class NewCenterInfo {
/** 第一个是集合,第二个是集合,第三个是个普通的值 **/
public List<NewCenterData> data;
public List<Integer> extend;
public int retcode;

public class NewCenterData {
public List<ChildrenInfo> children;
public int id;
public String title;
public String type;
}

public class ChildrenInfo {
public String id;
public String title;
public String type;
public String url;
}
}



你可能感兴趣的:(json,数据)