zoukankan      html  css  js  c++  java
  • 浅谈JSONObject,GSON解析JSON

    这次大致梳理一下关于JSON的其中两种解析方法:JSONObject和GSON

    例:

     待解析的Class.json文件

    [ { "id" : "1" , "name" : "Qbin" , "sex" : "male" },

      { "id" : "2" , "name" : "Qmm" , "sex" : "female" },

      { "id" : "3" , "name" : "cmy" , "sex" : "male" }]

    JSONObject解析:

    public class Main{
    
      .....
    
      parseJSONWithJSONObject(jsondata);
    
      .....
    
     
    
      private void parseJSONWithJSONObject(String jsonData){
    
        try{
    
          JSONArray jsonArray = new JSONArray(jsondata);
    
          //由于jsondata文件中定义了json数组
    
          for(int i = 0; i <jsonArray.length(); i++){
    
            JSONObject jsonObject = jsonArray.getJSONObject(i);
    
     
    
            //每个jsonObject对象中包含id , name , sex
    
            String id = jsonObject.getString("id");
    
            String name = jsonObject.getString("name");
    
            String sex = jsonObject.getString("sex");
    
                    
    
            Log.d( "JSONObject" , "id =" + id);
    
            Log.d( "JSONObject" , "name=" + name);
    
            Log.d( "JSONObject" , "sex=" + sex);
    
          }
    
        }catch(Exception e){
    
          e.printStackTrace();
    
        }
    
      }
    
    }

    GSON解析:

    首先添加GSON依赖:
    
    compile 'com.google.code.gson:gson:2.7'
    
     
    
    然后创建与Json对应的类
    
    public class Student{
    
      private String id;
    
      private String name;
    
      private String sex;
    
     
    
      public void setId(String id){
    
        this.id = id;
    
      }
    
      public String getId(){
    
        return id;
    
      }
    
     
    
      public void setName(String name){
    
        this.name = name;
    
      }
    
      public String getName(){
    
        return name;
    
      }
    
     
    
      public void setSex(String sex){
    
        this.sex = sex;
    
      }
    
      public String getSex(){
    
        return sex;
    
      }
    
    }
    
     
    
    public class Main{
    
      .......
    
      parseJSONWithGSON(jsondata);
    
      .......
    
      private void parseJSONWithGSON(String jsondata){
    
        Gson gson = new Gson();
    
        List<Student> studentList = gson.fromJson(jsondata , new TypeToken<List<Student>>(){}.getType());
    
        //TypeToken类帮助捕获泛型信息,然后存入匿名内部类中,通过getType()方法获取类型
    
        for(Student student : studentList){ 
    
          Log.d( "JSONObject" , "id =" + student.getId());
    
          Log.d( "JSONObject" , "name=" + student.getName());
    
          Log.d( "JSONObject" , "sex=" + student.getSex());
    
        }
    
      }
    
    }
    
     
  • 相关阅读:
    leetcode231 2的幂 leetcode342 4的幂 leetcode326 3的幂
    leetcode300. Longest Increasing Subsequence 最长递增子序列 、674. Longest Continuous Increasing Subsequence
    leetcode64. Minimum Path Sum
    leetcode 20 括号匹配
    算法题待做
    leetcode 121. Best Time to Buy and Sell Stock 、122.Best Time to Buy and Sell Stock II 、309. Best Time to Buy and Sell Stock with Cooldown 、714. Best Time to Buy and Sell Stock with Transaction Fee
    rand7生成rand10,rand1生成rand6,rand2生成rand5(包含了rand2生成rand3)
    依图
    leetcode 1.Two Sum 、167. Two Sum II
    从分类,排序,top-k多个方面对推荐算法稳定性的评价
  • 原文地址:https://www.cnblogs.com/qianbin/p/8423598.html
Copyright © 2011-2022 走看看