JSON全面讲解

JSON全面讲解

一、Json简介

    概念:JSON的全称是JavaScript Object Notation,是一种轻量级的数据交换格式。

    优点:

     1)本质就是具有特定格式的字符串

     2JSON完全独立于编程语言

     3JSONXML数据传输的有效性要高出很多,更省流量

    缺点:

语义性较差,不如XML直观

二、JSON数据格式

    整体结构

     1) String json1 = “{“id” : “12”,”name” : “Tom”}”

     2String json2 = “[{“id” : “12”,”name” : “Tom”},{“id” : “12”,”name” : “Tom”}]”

    Json对象:{}  -----类似于java中的map集合

     1Json对象的结构:{key1:value1,key2:value2...}

     2key的数据类型:字符串

     3value的数据类型:数值、字符串、nulljson数据[]json对象{}

    Json数组:[] ----类似于javalist集合

     1Json数组的结构:[value1,value2....]

     2value的数据类型:数值、字符串、nulljson数组[]json对象{}

三、JSON解析方向

    将java对象(包括集合)转换为json格式字符串----在服务端应用

    将json格式的字符串转换为java对象(包含集合)----在客户端应用

    Jsonjava之间的转换关系

    (1json对象对应javabean对象

    (2Json数组和java对象构成的list对应

四、JSON解析技术

    Android原生技术

    特点:编程相对麻烦

    数据之间的转换

   1)将json格式的字符串{}转换为java对象

  API

    JSONObjectjson):将json字符串解析为json对象

    Xxx.getXxx(String name) :根据name,在json对象中得到对应的Value

    Xxx.optXxx(String name) :根据name,在json对象中得到对应的Value

    Opt方法会在对应的key中的值不存在的时候返回一个空字符串或者返回你指定的默认值。

    但是get方法会出现空指针异常的情况。

   2)将json格式的字符串[]转换为java对象的List

  API:

    JSONARRAY(String json):json字符串解析为json数组

    Int lenght :得到json数组中元素的个数

   3)复杂json数据解析

其实就是既有json字符串又有json数组

Google没有提供将java转换为json的方法。

 

Gson框架技术

    特点:编码简洁,Google官方推荐

    数据之间转换:

    (1)将json格式的字符串{}转换为java对象

    API:

         <T> T fromJson(String json,Class<T> classofT)

   注意:要求Json对象中的key的名称与java对象对应的类中的属性名要相同

    步骤:

    (a)将Gsonjar包导入的项目中

    (b)创建Gson对象

                   Gson gson = new Gson();

    (c)通过创建的Gson对象调用fromJson()方法,返回该Json数据对应的java对象

                  DataInfo dataInfo = gson.fromJson(json,DataInfo,class);

 

2)将json格式的字符串[]转换为java对象的List

    API:

             fromJson(json,Type typeofT);

   步骤:

      (a)将Gsonjar包导入的项目中

      (b)创建Gson对象

                             Gson gson = new Gson();

      (c)通过创建的Gson对象调用fromJson()方法,返回该Json数据对应的java集合

     List<DataInfo> infos = gson.fromJson(josn,new TypeToken<List<DataInfo>>(){}.getType());

 (3)将java对象转换为json字符串{}

    API

        String toJson(Object src);

   步骤:

     (a)将Gsonjar包导入的项目中

     (b)创建Gson对象

                 Gson gson = new Gson();

     (c)通过创建的Gson对象调用toJson()方法,返回该Json数据

                      DataInfo info = new DataInfo(1,”apple”,250.0,”eggs”);

                      String json = gson.toJson(info);

4)将java对象的List转换为json字符串[]

    API:

               String toJson(Object src);

   步骤:

      (a)将Gsonjar包导入的项目中

      (b)创建Gson对象

                            Gson gson = new Gson();

      (c)通过创建的Gson对象调用toJson()方法,返回该Json数据

                       List<DataInfo> infoList = new ArrayList<>();

                      String json = gson.toJson(infoList);

FastJson技术

    特点:FastJson是一个java语言编写的高性能功能完善的Json库,它采用一种“假定有序快速匹配”的算法,把Json解析的性能提升到极致,是目前java语言中最快的Josn

    数据间转换

1)将json格式的字符串{}转换为java对象

   API:

   <T> T parseObject(String json,Class<T> classOfT);

   步骤:

      (a)将FastJsonjar包导入的项目中

      (bJSON调用parseObject()方法,获取转换后的java对象

             DataInfo dataInfo = JSON.parseObject(json,DataInfo.class);

2)将json格式的字符串[]转换为java对象的List

  API:

            List<T> parseArray(String json,Class<T> classOfT);

  步骤:

       (a)将FastJsonjar包导入的项目中

       (bJSON调用parseArray()方法,获取转换后的java集合

              List<DataInfo> infoList = new ArrayList(json,DataInfo.class);

3)将java对象转换为json字符串{}

    API:

          String toJSONString(Object object);

    步骤:

      (a)将FastJsonjar包导入的项目中

      (bJSON调用toJSONString()方法,获取转换后的json数据

                 DataInfo  dataInfo = new DataInfo(1,”apple”,2,”eggs”);

                 String json = JSON.toJSONString(dataInfo);

4)将java对象的List转换为json字符串[]

    API:

          String toJSONString(Object object);

   步骤:

        (a)FastJsonjar包导入的项目中

        (b)JSON调用toJSONString()方法,获取转换后的json数据

                  List<DataInfo> infoList = new ArrayList();

             DataInfo zhangsan = new DataInfo(1,zhangsan);

                   DataInfo lisi = new DataInfo(2,lisi);

                        infoList.add(zhangsan);

                       infoList.add( lisi );

                String json = JSON.toString(infoList);

最后说一下根据不同的json数据(获取到的json数据用HI JSON 进行格式化,就会很清晰json数据的结构),JavaBean类的编写原则:

(1)遇到{}就写一个类

(2)遇到[]就写一个集合一般写ArrayLsit

(3)什么符号都没有,就是基本数据类型

(4)尽量把javaBean对象定义广一些

(5)有的人说我不想写那个,太烦了,好吧,GsonFormat工具可以自动生成javaBean


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值