zoukankan      html  css  js  c++  java
  • 大话JSON之Gson解析JSON

    (三)解析Json数组(多条Json数据)

      比如有如下Json数据:

      [{'name':'John', 'grade':[{'course':'English','score':100},{'course':'Math','score':78}]},  //注:Json数组最外层一定要加"[]"

       {'name':'Tom', 'grade':[{'course':'English','score':86},{'course':'Math','score':90}]}]

      如何处理这样的数据呢?就要用到List。步骤如下:

      示例程序如下:

    import java.lang.reflect.Type;
    import java.util.List;
    
    import com.google.gson.Gson;
    import com.google.gson.reflect.TypeToken;
    
    /**
     * 用GSON解析Json数组
     */
    public class GsonTest {
        public static void main(String[] args) {
            // Json数组最外层要加"[]"
            String jsonData = "[{'name':'John', 'grade':[{'course':'English','score':100},{'course':'Math','score':78}]},{'name':'Tom', 'grade':[{'course':'English','score':86},{'course':'Math','score':90}]}]";
    
            List<Student> students = GsonUtil.parseJsonArrayWithGson(jsonData,
                    Student.class);
            System.out.println(students);
        }
    }
    
    /*
     * 封装的GSON解析工具类,提供泛型参数
     */
    class GsonUtil {
        // 将Json数据解析成相应的映射对象
        public static <T> T parseJsonWithGson(String jsonData, Class<T> type) {
            Gson gson = new Gson();
            T result = gson.fromJson(jsonData, type);
            return result;
        }
    
        // 将Json数组解析成相应的映射对象列表
        public static <T> List<T> parseJsonArrayWithGson(String jsonData,
                Class<T> type) {
            Gson gson = new Gson();
            List<T> result = gson.fromJson(jsonData, new TypeToken<List<T>>() {
            }.getType());
            return result;
        }
    }
    
    class Student {
        private String name;
        private List<Grade> grade; // 因为grade是个数组,所以要定义成List
    
        public class Grade {
            private String course;
            private String score;
    
            public String getCourse() {
                return course;
            }
    
            public void setCourse(String course) {
                this.course = course;
            }
    
            public String getScore() {
                return score;
            }
    
            public void setScore(String score) {
                this.score = score;
            }
    
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public List<Grade> getGrade() {
            return grade;
        }
    
        public void setGrade(List<Grade> grade) {
            this.grade = grade;
        }
    }
    

    输出结果:

    [{name=John, grade=[{course=English, score=100.0}, {course=Math, score=78.0}]}, {name=Tom, grade=[{course=English, score=86.0}, {course=Math, score=90.0}]}]

  • 相关阅读:
    kafka系列教程5(客户端实践)
    log4j示例-Daily方式(log4j.properties)
    Log4j.xml配置(rolling示例)
    Log4j配置详解之log4j.xml
    kafka 常用命令
    linux下进程cpu占用过高问题定位方法
    Linux 操作系统主机名变成bogon怎么解决?
    网络基础 Windows控制台下Ftp使用简介
    网络基础 cookie详解
    网络基础 http 会话(session)详解
  • 原文地址:https://www.cnblogs.com/Jackie-zhang/p/6071944.html
Copyright © 2011-2022 走看看