• 解析json数据总结


    json格式的数据一般就是两种类型的,一种是数组类型的,一种是对象类型的。

    数组类型:[{"id":"a001","name":"zhangsan","age":20,"sex":"male","address":"beijing"},{"id":"a002","name":"lisi","age":20,"sex":"female","address":"beijing"}]

    对象类型:{"id":"a001","name":"zhangsan","age":20,"sex":"male","address":"beijing"}

    第一种方式:使用JsonReader对象来解析数组类型的json数据。 具体实现方式请参考一下代码。

    public static List<Student> jsonReaderToJsonParser(String jsonData) {
            list = new ArrayList<Student>();
            // 使用jsonreader对象解析json数据,使用new 关键字实例化一个JsonReader对象
            @SuppressWarnings("resource")
            JsonReader jsonReader = new JsonReader(new StringReader(jsonData));
            try {
                jsonReader.beginArray();// 开始解析数组[{key:value,key:value},{key:value,key:value}]
                while (jsonReader.hasNext()) {// 判断是否有下一个数组,如果有,就进入
                    jsonReader.beginObject();// 开始解析一个json对象{key:value,key:value}
                    student = new Student();
                    while (jsonReader.hasNext()) {
                        String keysName = jsonReader.nextName(); // 获得Key的名称
                        if (keysName.equals("id")) {
                            student.setId(jsonReader.nextString());
                        } else if (keysName.equals("name")) {
                            student.setName(jsonReader.nextString());
                        } else if (keysName.equals("sex")) {
                            student.setSex(jsonReader.nextString());
                        } else if (keysName.equals("age")) {
                            student.setAge(Integer.parseInt(jsonReader.nextString()));
                        } else if (keysName.equals("address")) {
                            student.setAddress(jsonReader.nextString());
                        }
    
                    }
                    list.add(student);
                    jsonReader.endObject(); // 结束json对象的解析
    
                }
    
                jsonReader.endArray(); // 结束数组的解析
    
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return list;
        }

    第二种方式:使用google提供的Gson工具解析对象类型的json数据。具体实现方式请参考一下代码。

    // 解析json对象,通过Gson对象的fromJson方法将json对象直接转换成Student实体对象("{"id":"A001","name":"zhangsan","sex":"male","age":20,"address":"beijing"}")
        public static List<Student> gsonToJsonParser(String jsonData) {
            //实例化一个List数组
            list = new ArrayList<Student>();
            //创建一个Gson对象
            Gson gson = new Gson();
            //调用Gson对象的fromJson函数,返回一个Student对象
            Student student = gson.fromJson(jsonData, Student.class);
            list.add(student);
            return list;
        }

    第三种方式:使用Gson工具解析数组类型的json数据

        // 解析json数组,通过使用Gson对象的fromJson方法装载json数据
        public static List<Student> parseStudentFromJson(String jsonData) {
            list = new LinkedList<Student>();
            // 实例化一个Type对象
            Type listType = new TypeToken<LinkedList<Student>>() {
            }.getType();
            // 实例化一个Gson对象
            Gson gson = new Gson();
            // 通过调用Gson的fromJson函数返回一个List集合的数组
            list = gson.fromJson(jsonData, listType);
            return list;
        }
  • 相关阅读:
    const与readonly
    JQuery Tooltipster
    Log4Net使用
    asp.net mvc 4 beta 版已发布
    控件属性
    C# 获取当前路径
    对toLocaleString()、toString()、valueOf()的理解
    靶场练习3CSRF攻击
    计算字符串长度
    Android ListView 自定义适配器
  • 原文地址:https://www.cnblogs.com/yshuaiw/p/3433518.html
Copyright © 2020-2023  润新知