认识Gson解析Json

来源:互联网 发布:ping 端口号命令 编辑:程序博客网 时间:2024/05/20 02:24

JSON有两种表示结构,对象和数组。
1、对象–》以”{”大括号开始,以”}”大括号结束。中间部分由0或多个以”,”分隔的”key(关键字)/value(值)”对构成,关键字和值之间以”:”分隔,语法结构如代码。

{    key1:value1,    key2:value2, }

2、数组–》以”[”开始,”]”结束。中间由0或多个以”,”分隔的值列表组成,语法结构如代码。

 [    {        key1:value1,        key2:value2     },    {         key3:value3,         key4:value4       }]

2.1、客户端与服务器进行数据交互时,常常需要将数据在服务器端将数据转化成字符串并在客户端对json数据进行解析生成对象。但是用jsonObject和jsonArray解析相对麻烦。利用Gson和阿里的fastjson可以很方便的将下面四种常用的数据转换成json字符串,并能够将其解析成原数据对象。

类型一:JavaBean类型二:List<JavaBean>类型三:List<String>类型四:List<Map<String,Object>>

3、json字符串:指的是符合json格式要求的js字符串。例如:var jsonStr = “{StudentID:’100’,Name:’tmac’,Hometown:’usa’}”;
4、json对象:指符合json格式要求的js对象。例如:var jsonObj = { StudentID: “100”, Name: “tmac”, Hometown: “usa” };

5、普通的json解析方法即JsonObject和JsonArray的配合使用,这对于解析小数据的json数据还是比较实用,但是当解析json数据比较复杂的时候这种方法就显得比较吃力也比较麻烦了,解析json数据的另外一种方法就是通过Gson解析:

很多时候大家都是不知道这个Bean是该怎么定义,这里面需要注意几点:
1、内部嵌套的类必须是static的,要不然解析会出错;
2、类里面的属性名必须跟Json字段里面的Key是一模一样的;
3、内部嵌套的用[]括起来的部分是一个List,所以定义为 public List b,而只用{}嵌套的就定义为 public C c,

String json = {"a":"100","b":[{"b1":"b_value1","b2":"b_value2"},     {"b1":"b_value1","b2":"b_value2"}],"c": {"c1":"c_value1","c2":"c_value2"}}  

这json使用Gson解析就比较简单,需要定义一个序列化的Bean,这里采用内部类的形式

public class JsonBean {                           public String a;                           public List<B> b;                           public C c;                           public static class B {                                        public String b1;                                    public String b2;                          }                          public static class C {                                   public String c1;                                   public String c2;                         }                }  
1 0