android 开发中常用的json数据解析(内容详细,使用便捷通俗易懂)Gson、FastJson、JsonObject等

Json数据解析详解及使用:

前言:josn数据的解析是我们开发app最基本的,json解析的方法有很多,下面就给你们详细解释一下我们开发中最常用的几种,来方便使用。

一、使用我们原生的Android技术解析JSON:

1、解析JSON对象的API:JsonObject
示例代码:

(1)获取或创建JSON数据(为了方便,这里就直接创建了):

String json = "{\n" +  
               "\t\"id\":2, \"name\":\"金鱼\", \n" +  
               "\t\"price\":12.3, \n" +  
               "\t\"imagePath\":\"http://blog.csdn.net/qq_29269233/L05_Server/images/f1.jpg\"\n" +  
               "}\n";  

       ShopInfo shopInfo = null;  

(2)解析Json对象:

try {  
            JSONObject jsonObject = new JSONObject(json);  
//            int id = jsonObject.getInt("id");  
            int id1 = jsonObject.optInt("id");  

            String name = jsonObject.optString("name");  

            double price = jsonObject.optDouble("price");  

            String imagePath = jsonObject.optString("imagePath");  

            // 封装Java对象  
            shopInfo = new ShopInfo(id1, name, price, imagePath);  

        } catch (JSONException e) {  
            e.printStackTrace();  
        }  

注意:这个要try_catch异常处理。

(3)创建JavaBean类,并显示解析后的数据:

tv_native_last.setText(shopInfo.toString());  

这个JsonObject我就不用多讲了,这种方法相信我们用了很久了大家都知道

2、解析Json数组的API:JSONArray
示例代码:

(1)获取或创建JSON数据:

String json = "[\n" +  
               "    {\n" +  
               "        \"id\": 1,\n" +  
               "        \"imagePath\": \"http://blog.csdn.net/qq_29269233/f1.jpg\",\n" +  
               "        \"name\": \"金鱼1\",\n" +  
               "        \"price\": 12.3\n" +  
               "    },\n" +  
               "    {\n" +  
               "        \"id\": 2,\n" +  
               "        \"imagePath\": \"http://blog.csdn.net/qq_29269233/f2.jpg\",\n" +  
               "        \"name\": \"金鱼2\",\n" +  
               "        \"price\": 12.5\n" +  
               "    }\n" +  
               "]";  

(2)解析json数组:

try {  
            JSONArray jsonArray = new JSONArray(json);  

            for (int i = 0; i < jsonArray.length(); i++) {  
                JSONObject jsonObject = jsonArray.getJSONObject(i);  

                if (jsonObject != null) {  
                    int id = jsonObject.optInt("id");  

                    String name = jsonObject.optString("name");  

                    double price = jsonObject.optDouble("price");  

                    String imagePath = jsonObject.optString("imagePath");  

                    // 封装Java对象  
                    ShopInfo shopInfo = new ShopInfo(id, name, price, imagePath);  

                    shops.add(shopInfo);  
                }  
            }  
        } catch (JSONException e) {  
            e.printStackTrace();  
        }  

(3)显示解析后的数据:

tv_native_last.setText(shops.toString());  

二、使用我们Google爸爸提供的Gson框架技术解析JSON:

先放出jar包的下载地址:https://mvnrepository.com/artifact/com.google.code.gson/gson
1、用Gson解析JSON对象:

使用方式:
步骤1:用Gson解析JSON对象:

compile group: 'com.google.code.gson', name: 'gson', version: '2.8.0'  

步骤2:创建Gson对象:

Gson gson = new Gson();  

步骤3: 通过创建的Gson对象调用fromJson()方法,返回该json数据对象的Java对象;

ShopInfo shopInfo = gson.fromJson(json, ShopInfo.class);  

示例代码如下:

// 1 获取或创建JSON数据  
       String json = "{\n" +  
               "\t\"id\":2, \"name\":\"金鱼\", \n" +  
               "\t\"price\":12.3, \n" +  
               "\t\"imagePath\":\"http://blog.csdn.net/qq_29269233/L05_Server/images/f1.jpg\"\n" +  
               "}\n";  

       // 2 解析JSON数据  
       Gson gson = new Gson();  

       ShopInfo shopInfo = gson.fromJson(json, ShopInfo.class);  

       // 3 展示数据  
       tv_gson_last.setText(shopInfo.toString());  

2、用Gson解析JSON数组:

与上基本面相同,要用Gson就要先添加依赖,然后创建Gson对象;
通过创建的Gson对象调用fromJson()方法,返回该json数据对应的Java集合。

// 1 获取或创建JSON数据  
       String json = "[\n" +  
               "    {\n" +  
               "        \"id\": 1,\n" +  
               "        \"imagePath\": \"http://blog.csdn.net/qq_29269233/f1.jpg\",\n" +  
               "        \"name\": \"金鱼1\",\n" +  
               "        \"price\": 12.3\n" +  
               "    },\n" +  
               "    {\n" +  
               "        \"id\": 2,\n" +  
               "        \"imagePath\": \"http://blog.csdn.net/qq_29269233/f2.jpg\",\n" +  
               "        \"name\": \"金鱼2\",\n" +  
               "        \"price\": 12.5\n" +  
               "    }\n" +  
               "]";  

       // 2 解析JSON数据  
       Gson gson = new Gson();  

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

       // 3 展示数据  
       tv_gson_last.setText(shops.toString());  

三、用Fastjson框架技术解析JSON:

Fastjson是阿里巴巴开源框架,已经开源到github上了,地址为:https://github.com/alibaba/fastjson

使用方式(先导入jar包,或者在Gradle中添加依赖):

compile 'com.alibaba:fastjson:1.1.55.android'  

1、用Fastjson解析JSON对象:

示例代码:

// 1 获取或创建json数据  
       String json = "{\n" +  
               "\t\"id\":2, \"name\":\"金鱼\", \n" +  
               "\t\"price\":12.3, \n" +  
               "\t\"imagePath\":\"http://blog.csdn.net/qq_29269233/L05_Server/images/f1.jpg\"\n" +  
               "}\n";  

       // 2 解析JSON数据  
       ShopInfo shopInfo = JSON.parseObject(json, ShopInfo.class);  

       // 3 显示数据  
       tv_fastjson_last.setText(shopInfo.toString());  

2.用Fastjson解析JSON数组:

利用Fastjson的JSON调用parseArray()方法,获取转换后的Java集合。

// 1 获取或创建json数据  
       String json = "[\n" +  
               "    {\n" +  
               "        \"id\": 1,\n" +  
               "        \"imagePath\": \"http://blog.csdn.net/qq_29269233/f1.jpg\",\n" +  
               "        \"name\": \"金鱼1\",\n" +  
               "        \"price\": 12.3\n" +  
               "    },\n" +  
               "    {\n" +  
               "        \"id\": 2,\n" +  
               "        \"imagePath\": \"http://blog.csdn.net/qq_29269233/f2.jpg\",\n" +  
               "        \"name\": \"金鱼2\",\n" +  
               "        \"price\": 12.5\n" +  
               "    }\n" +  
               "]";  

      // 2 解析JSON数据  
       List<ShopInfo> shopInfos = JSON.parseArray(json, ShopInfo.class);  

       // 3 显示数据  
       tv_fastjson_last.setText(shopInfos.toString());  

这里的话,json解析就详细解释完了,在这里我总结一下这三种的特点,第一种解析方式原生JsonObject的解析方式:API步骤多麻烦,对于复杂的json数据解析很容易出错!(不推荐使用) 第二种Gson解析方式:代码量简洁,可以很方便地解析复杂的Json数据,而且谷歌官方也推荐使用。(推荐使用) 第三种FastJson解析方式:用Java语言编写的高性能功能完善的JSON库,代码也简洁方便。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LiuHai2014csd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值