zoukankan      html  css  js  c++  java
  • Android 解析JSON格式数据

    比起XML,JSON主要优势在于它的体积更小,在网络上传输的时候可以更省流量。但缺点在于,它的语义性较差,显示不如XML直观。

    JSON格式 :  { "name_A" : "value_A","name_B" : "value_B" }

    表示:name_A = value_A;  name_B = value_B;

    我将对下面的JSON数据进行解析:

    [{"id":"5","version":"5.5","name":"愤怒的小鸟"},
    {"id":"6","version":"7.0","name":"神庙逃亡"},
    {"id":"7","version":"3.5","name":"保卫萝卜"}]
    

    代码如下:

        private void parseJSONWithJSONObject(String jsonData) {
            try {
    
                JSONArray jsonArray = new JSONArray(jsonData);
                for (int i = 0; i < jsonArray.length(); i++) {
                    JSONObject jsonObject = jsonArray.getJSONObject(i);
    String id
    = jsonObject.getString("id"); String name = jsonObject.getString("name"); String version = jsonObject.getString("version"); Log.d("woider", "id is " + id); Log.d("woider", "name is " + name); Log.d("woider", "version is " + version); } } catch (Exception e) { e.printStackTrace(); } }

    首先获取JSON元素数组:JSONArray jsonArray = new JSONArray(jsonData);

    其次循环获取每个元素:JSONObject jsonObject = jsonArray.getJSONObject(index);

    每次循环保存名称相对应的值:String name = jsonObject.getString("name");

    ======================使用GSON========================

    GSON是谷歌提供的一个API,它主要就是可以将一段JSON格式的字符串自动映射成一个对象,从而不需要手动编码进行解析。

    但是GSON并没有被添加到Android官方的API中,因此如果需要使用这个功能的话,则必须在项目中添加一个GSON的Jar包。

    首先要建立一个类容纳JSON中的数据,然后实例化 Gson 对象,并通过 fromJson() 方法获取JSON对象集合。

        private void parseJSONWithGSON(String jsonData) {
            Gson gson = new Gson();
            List<App> appList = gson.fromJson(jsonData, new TypeToken<List<App>>() {
            }.getType());
            
            for (App app : appList) {
                Log.d("woider", "id is " + app.getId());
                Log.d("woider", "name is " + app.getName());
                Log.d("woider", "version is " + app.getVersion());
            }
        }

    最后,补上运行截图:

  • 相关阅读:
    Retrofit/Okhttp API接口加固技术实践(上)
    浅析C#中的结构体和类
    iOS中 支付宝钱包具体解释/第三方支付 韩俊强的博客
    Java并发之volatile二
    dynamic initializer和全局变量
    二叉树转换成森林&amp;森林变成二叉树
    这才是真正的裸眼3D!超级震撼!!
    每一个开发人员都应该有一款自己的App
    Hibernate HQL的使用
    我的Android进阶之旅------&gt;Android 关于arm64-v8a、armeabi-v7a、armeabi、x86下的so文件兼容问题
  • 原文地址:https://www.cnblogs.com/woider/p/5324722.html
Copyright © 2011-2022 走看看