Json (JsonObject、JsonArray)

什么是JSON?

JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度。

Json与XML的比较

XML的结构:倒立的树形结构

<people> 
        <person id="1">
                <name>张三</name>
                <age>20</age>
                <gender>男</gender>
        </person>
        <peson id="2">
                <name>李四</name>
                <age>25</age>
                <gender>女</gender>
        </person>
</people>

Json的结构:

{

  people:[

            { "id" : "123",  "name" : "张三",  "age" : "20",  "gender" : "男" } , 

            { "id" : "456",  "name" : "李四",  "age" : "25",  "gender" : "女" } , 

  ] 

};

与Json有关的三种数据类型

第一种数据类型:标量(scalar),也就是一个单数的字符串(string)或者数字(numbers),比如”北京”这个单独的词.

第二种数据类型:序列(sequence),也就是若干个相关的数据按照一定顺序并列在一起,又叫数组(array)或者列表(list),比如”北京,上海”.

第三种数据类型:映射(mapping),也就是一个名/值对(name/value),即数据有一个名称,还有一个相对应的值,这又称作散列(hash)或者字典(dictionary),比如”首都: 北京”

Json的优点和缺点

优点:

1.数据格式比较简单,易于读写,格式都是压缩的,占用带宽小.

2.支持多种语言,包括ActionScript,C,C#,ColdFusion,Java,JavaScript.Perl.PHP.Python,Ruby等服务器端语言,便于服务器端的解析.

缺点:

1.要求字符集,必须是Unicode,受约束性强.否则会产生空或者乱码。

2.语法过于严谨,必须遵循json语法的四分原则. 

 

Json的语法规则

JSON就是一串字符串 只不过元素会使用特定的符号标注。

1、{} 双括号表示对象 - JsonObject

2、[] 中括号表示数组(对象的集合) - JsonArray

3、"" 双引号内是属性或值

4、: 冒号表示后者是前者的值(这个值可以是字符串、数字、也可以是另一个数组或对象)

5、并列的数据之间用逗号(“,”)分隔

    JSON基于两种结构:

1、JsonObject

       JsonObject的数据是用 {  } 来表示的,JsonObject可以包含有JsonArray。

       例如:  

 { "id" : "123", "name" : "张三", "age" : "20", "gender" : "男" }  ;

{

  data:[

            { "id" : "123",  "name" : "张三",  "age" : "20",  "gender" : "男" } , 

            { "id" : "456",  "name" : "李四",  "age" : "25",  "gender" : "女" } , 

  ] 

};

2、JsonArray

        顾名思义是由JsonObject构成的数组,用  [ { } , { } , ......  , { } ]  来表示

        例如:  表示了包含2个JSONObject的JSONArray。可以看到一个很明显的区别,一个用的是 {  }  ,一个最外面用的是 [  ]  

[

  { "id" : "123",  "name" : "张三",  "age" : "20",  "gender" : "男" } , 

  { "id" : "456",  "name" : "李四",  "age" : "25",  "gender" : "女" } , 

] 


 

3、如何从字符串String获得JSONObject对象和JSONArray对象            

                   JsonObject  jsonObject  = new JsonObject ( String  str);

                   JsonArray   jsonArray   = new JsonArray(String    str  ) ;

 或者使用Google的Gson类

                   JsonObject jsonObject = gson.fromJson(str, JsonObject.class)

                   JsonArray  jsonArray  = gson.fromJson(str, JsonArray.class)

4、如何从JsonArray中获得JsonObject对象

       大家可以把JsonArray当成一般的数组来对待,只是获取的数据内数据的方法不一样                   

                   JsonObject   jsonObject = (JsonObject)jsonArray.get(i);

                   JsonObject   jsonObject  =  jsonArray.getJsonObject(i) ;  

       两者都可。第一种注意转换 

5、如何从中JsonObject获得JsonArray对象

        从jsonObject中获取名为 "data"  的 jsonArray                

                  JsonArray jsonArray=jsonObject.getAsJsonArray("data");

        以上述例子为结果,可以得到处理后的数据

[

  { "id" : "123",  "name" : "张三",  "age" : "20",  "gender" : "男" } , 

  { "id" : "456",  "name" : "李四",  "age" : "25",  "gender" : "女" } , 

] 

       依据上一步骤得到的jsonArray,获取其中一个JsonObject

                   JsonObject   jsonObject = (JsonObject)jsonArray.get(0);

       结果如下:

 { "id" : "123",  "name" : "张三",  "age" : "20",  "gender" : "男" } , 

6、转换成对象

   将json转换成POJO类,单个:

                   Person person = gson.fromJson(json, Person.class);

 多个:

       List<Person>  people = gson.fromJson(json,new TypeToken<List<Person>>() {}.getType()));

7、对象转换成json

List<Object> 转换成 json

List<Object>  results =  new List<Object>;
Gson gson = new Gson();
String str = gson.toJson(results);
JSONArray jsonArray = JSONArray.parseArray(str);

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值