zoukankan      html  css  js  c++  java
  • Android基础之json数据解析

    这次来聊聊Android中json数据的解析,既然是基础就要求只要你看一遍就必须会的,不牵涉到太多的复杂逻辑,目的就是让你初步认识json数据的解析和学会对简单的json数据进行解析。

    首先第一步我们先来准备一个json的数据,这里我们创建一个最简单的json数据,它长这样

    [{"id":"1","name":"张三"},{"id":"2","name":"李四"}]

    关于json语法我们这里不做介绍,可自行搜索学习,以上就是最简单的一个json数据了,这里其实是一个json数组了,里面包含两条内容。

    接下来我们创建新项目,在main文件夹下创建一个新的文件夹assets,将json数据放到这个文件夹下。

    第一步:获取到我们的json数据,可使用如下代码完成

    InputStream stream = getAssets().open("data.json");
                        BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
    
                        StringBuilder response = new StringBuilder();
                        String line = "";
                        while ((line=reader.readLine())!=null){
                            response.append(line);
                        }
                        String string = response.toString();
    

    这里将创建的json数据命名为data.json,上述代码中得到的string就是我们拿到的json数据了。

    这里先来说一下json数据解析的常用方法,这里介绍两种常用的解析方法,第一种是直接使用java中的方法也即是官方提供的JSONObiect,另外介绍一种开源库是谷歌的GSON,这两种是比较常用的,当然还有其他很多比较优秀的开源框架,这里不再一一介绍,感兴趣的可以自己百度学习一下

    第二步:开始解析json数据
    我们先使用官方提供的JSONObject来对数据进行解析,其实这种方法是JSONObject和JSONArray一起配合使用的,我们来看下代码

     //不使用开源库,使用原生JSONObject解析json数据
     JSONArray jsonArray = new JSONArray(string);                                  for (int i = 0;i<jsonArray.length();i++)
     {
    
    JSONObject jsonObject = jsonArray.getJSONObject(i);
                        System.out.println(jsonObject.getString("name"));
                     }
    

    以上我们首先创建一个JSONArray将数据填充进去,紧接着使用for循环遍历数组元素,然后创建JSONObject对象就可以通过调用JSONObject的getString方法直接拿到json数据中的值了。

    接下来我们使用谷歌的开源库GSON来对数据进行解析,在使用GSON的时候有写小细节需要注意,我们先来看下如下代码

    Gson gson = new Gson();
       Person person = gson.fromJson(string,Person.class);
     System.out.println(person.getName());
    

    首先在使用GSON的时候要求我们先创建一个类,比如我们要解析如下json数据

    {"id":"1","name":"张三"}

    那我们要新建一个Person类,并且加上name和id两个字段,设置好set和get方法,然后我们通过上述代码就可以对这段json数据进行解析,通过创建的person对象就可以直接通过set和get方法拿到我们想要的值了,但是如果是一下jason数据,再使用上述方法可就会出错了

    [{"id":"1","name":"张三"}]

    这个时候如果我们继续使用如下代码就会报错

    Gson gson = new Gson();
       Person person = gson.fromJson(string,Person.class);
     System.out.println(person.getName());
    

    为什么呢?因为这种方法不能解析json数组,那么对于数据是数组类型的json数据,我们用Gson该如何解析呢?这个只是稍微麻烦了一点点,我们需要借助TypeToken将期望解析成的数据类型传入到fromJson()方法中,代码如下

     Gson gson = new Gson();
                        List<Person> personList = gson.fromJson(string, new TypeToken<List<Person>>(){}.getType());
                        for (Person person: personList){
                            System.out.println(person.getName());
                        }

    通过上述代码我们就可以将数据是数组的json数据进行解析了,在此之前我们说过了在使用GSON的时候需要注意一点就是数组这块,我们要记住如下两段json数据的区别

    [{"id":"1","name":"张三"}]
    {"id":"1","name":"张三"}

    这块如果不加小心,在使用GSON的时候可能就会遇到点小bug了

    以上就是Android中对json数据进行简单解析的使用方法了,因为是基础知识介绍,所以选取了非常简单的json数据,也只简单的介绍了JSONObject和GSON的简单用法,也许你会感到json的数据解析真简单,但是当json数据变得复杂的时候你就会觉得,json的数据解析还是有点挑战性的,好了,就到这,谢谢各位看官!

  • 相关阅读:
    后缀数组详解
    快速傅里叶变换详解(FFT)
    算法学习————SG函数和SG定理
    noi.ac七一模拟赛
    算法学习————高斯消元
    算法学习————Lucas定理
    算法学习————Kruskal重构树
    算法学习————FWT
    20210629模拟
    复习笔记之背包
  • 原文地址:https://www.cnblogs.com/ithuangqing/p/12113679.html
Copyright © 2011-2022 走看看