android json解析详解(json手动解析)

一 .json简介
1)概念:json全称是javaScript object Notation,是一种病轻量级的数据交换格式。
2)特点:
1.本质就是具有特定格式的字符串
2,.json完全独立于编程语言
3.json比xml数据传输的有效性要高出很多

二。json数据格式
1)整体结构:
String json1="{“id”:“12”,“name”:“TOM”}";
String json2=''[{“id”:“12”,“name”:“TOM”},{“id”:“12”,“name”:“TOM”},{“id”:“12”,“name”:“TOM”}]"
2)json对象
1)json对象的结构:
{key:value1,key:value2,}
2)key的数据结构类型:字符串
3)value的数据类型:数值,字符串,null,json数组[] ,json对象{}
4:例子:{“id”:“12”,“name”:“TOM”}
3)json数组
1)json数组的结构 [value1,value2,value3]
2)value的数据类型:数值, 字符串 null json数组[] json对象{}
3)例子:[1, “ab”,[], {“n”:123, “b”:”abc”}]

三。json解析方向
1)将java对象(包含集合)转换为json字符串格式(在服务器端应用)
2)将json格式字符串转换java对象(在客户端应用)
3)json和java之间的转换关系
json对应java对象转换
json数组和java对象构成的list对应

json解析技术
android原生解析
1)特点: 编程相对麻烦
2)数据之间转换
(1)将json格式的字符串{}转换为Java对象
API:
JSONObject(String json) : 将json字符串解析为json对象
Xxx getXxx(String name) : 根据name, 在json对象中得到对应的Value
Xxx optXxx(String name) : 根据name, 在json对象中得到对应的Value
注意:
optXxx方法会在对应的key中的值不存在的时候返回一个空字符串或者返回你指定的默认值,但是getString方法会出现空指针异常的错误。
测试数据:
(2)将json格式的字符串[]转换为Java对象的List
API:
JSONArray(String json) : 将json字符串解析为json数组
int length() : 得到json数组中元素的个数
Xxx getXxx(int index) : 根据下标得到json数组中对应的元素数据
Xxx optXxx(int index) : 根据下标得到json数组中对应的元素数据
注意:
optXxx方法会在对应的key中的值不存在的时候返回一个空字符串或者返回你指定的默认值,但是getString方法会出现空指针异常的错误。
测试数据:
(3)复杂json数据解析
a) 测试数据:
http://api.ds.lingshi.cccwei.com/?cid=625561&uid=0&tms=20160427085818&sig=36b291895c63dfc4&wssig=26637611c0c64fb7&os_type=3&version=24&channel_name=feibo&srv=2402&classify_id=32
b) GsonFormat工具生成对象类
见工具使用
c) 手动解析json数据
(4)特殊json数据解析
a) 测试数据
http://api.bilibili.com/online_list?_device=android&platform=android&typeid=13&sign=a520d8d8f7a7240013006e466c8044f7
b) 手动写解析json数据的对象类
c) 手动解析json数据

2.Gson框架技术
1)特点:编码简洁,谷歌官方推荐
3)数据之间转换
(1)将json格式的字符串{}转换为Java对象
API:
fromJson(String json, Class<T> classOfT);
注意:
要求json对象中的key的名称与java对象对应的类中的属性名要相同
步骤
1)将Gson的jar包导入到项目中
2)创建Gson对象 :
Gson gson = new Gson();
3)通过创建的Gson对象调用fromJson()方法,返回该JSON数据对应的Java对象:
ShopInfo shopInfo = gson.fromJson(json, ShopInfo.class);
测试数据:
(2)将json格式的字符串[]转换为Java对象的List
API:
fromJson(String json, Type typeOfT);
type
测试数据:
步骤
1)将Gson的jar包导入到项目中
2)创建Gson对象 :
Gson gson = new Gson();
3)通过创建的Gson对象调用fromJson()方法,返回该JSON数据对应的Java集合:
List<ShopInfo> shops = gson.fromJson(json, new TypeToken<List<ShopInfo>>() {}.getType());
(3)将Java对象转换为json字符串{}
API:
String toJson(Object src);
步骤
1)将Gson的jar包导入到项目中
2)创建Gson对象 :
Gson gson = new Gson();
3)通过创建的Gson对象调用toJson()方法,返回json数据:
ShopInfo shop = new ShopInfo(1, "鲍鱼", 250.0, "");
String json = gson.toJson(shop);
(4)将Java对象的List转换为json字符串[]
API:
String toJson(Object src);
步骤
1)将Gson的jar包导入到项目中
2)创建Gson对象 :
Gson gson = new Gson();
3)通过创建的Gson对象调用toJson()方法,返回json数据:
List<ShopInfo> shops = new ArrayList<>();
String json = gson.toJson(shops);

3。FastJson框架技术
1)特点:FasrJson是java语言编程写的高性能完善json库,他采用一种假定有序快速匹配算法,把jsonParse的性能提升到极致,目前是java语言中最快的json库
3)数据之间的转换
(1)将json格式的字符串{}转换为Java对象
API: parseObject(String json, Class<T> classOfT);
步骤:
1)导入fastjson的jar包
2)JSON调用parseObject()方法,获取转换后的Java对象
例如:ShopInfo shopInfo = JSON.parseObject(json, ShopInfo.class);
测试数据:
(2)将json格式的字符串[]转换为Java对象的List
API: List<T> parseArray(String json,Class<T> classOfT);
步骤:
1)导入fastjson的jar包
2)JSON调用parseArray()方法,获取转换后的Java集合
例如:List<ShopInfo> shopInfos = JSON.parseArray(json, ShopInfo.class);
测试数据:
(3)将Java对象转换为json字符串{}
API: String toJSONString(Object object);
步骤:
1)导入fastjson的jar包
2)JSON调用toJSONString()方法,获取转换后的json数据
例如:
ShopInfo shopInfo = new ShopInfo(1, "鲍鱼", 250.0, "baoyu");
String json = JSON.toJSONString(shopInfo);
(4)将Java对象的List转换为json字符串[]
API: String toJSONString(Object object);
步骤:
1)导入fastjson的jar包
2)JSON调用toJSONString()方法,获取转换后的json数据
例如:
List<ShopInfo> shops = new ArrayList<>();
ShopInfo baoyu = new ShopInfo(1, "鲍鱼", 250.0, "baoyu");
ShopInfo longxia = new ShopInfo(2, "龙虾", 251.0, "longxia");
shops.add(baoyu);
shops.add(longxia);
String json = JSON.toJSONString(shops);

5.GsonFormat工具使用教程
1 _  GsonFormat 工具使用
1 .1_ GsonFormat
1 )打开 Android studio 页面,点击设置按钮。
 
 
2 )点击 Plugins 按钮
 
 
3 )在右侧输入框中输入 gsonformat, 然后点击中间部位的 Browse( 必须在联网情况下点击 )
 
 
4 )选择 GsonFormat ,点击右侧的安装插件

 5 )重启一下 Android studio
6 )在 Android studio 中创建一个类
 
 
7 )在该类中同时按下 alt +shift+s ,并点击 GsonFormat
 
 
8 )将要解析的 JSON 字符串粘贴到 GsonFormat

 9 )点击 OK
 
 
10 )这样就将输入的 JSON 数据转换为了 bean 对象
public class TestGsonFormat {
     /**
     * id : 2
     * name : 大虾
      * price : 12.3
     * imagePath : http://192.168.10.165:8080/L05_Server/images/f1.jpg
     */
     private int id ;
     private String name ;
     private double price ;
     private String imagePath ;

     public int getId() {
         return id ;
    }

     public void setId( int id) {
         this . id = id;
    }

     public String getName() {
         return name ;
    }

     public void setName(String name) {
         this . name = name;
    }

     public double getPrice() {
         return price ;
    }

     public void setPrice( double price) {
         this . price = price;
    }

     public String getImagePath() {
         return imagePath ;
    }

     public void setImagePath(String imagePath) {
         this . imagePath = imagePath;
    }
}


发布了96 篇原创文章 · 获赞 370 · 访问量 42万+

猜你喜欢

转载自blog.csdn.net/wk_beicai/article/details/78516750