基于JAVA中的四种JSON解析方式详解

  

我们在日常开发中少不了和JSON数据打交道,那么我们来看看JAVA中常用的JSON解析方式。
  

  

1, JSON官方
  2,GSON
  3,FastJSON
  4,杰克逊
  

  

JSON操作涉及到的类:

        公开课学生{      私人int id;   私人字符串名称;   私人int年龄;   公共int getId () {   返回id;   }   公共空间setId (int id) {   这一点。id=id;   }   公共字符串getName () {   返回名称;   }   公共空间setName(字符串名称){   this.name=名称;   }   公共int getAge () {   返回年龄;   }   公共空间setAge (int年龄){   这一点。年龄=年龄;   }   公共的学生(int id字符串名称,int年龄){   超级();   这一点。id=id;   this.name=名称;   这一点。年龄=年龄;   }   公共的学生(){   超级();   }   @Override   公共字符串toString () {   返回“学生[id=" +身份证+”,name=" +名字+ ",年龄=" +年龄+ "]”;   }   }      之前            公开课级{      私人int id;   私人字符串名称;   私人ArrayList学生;   公开级(int id字符串名称,ArrayList学生){   超级();   这一点。id=id;   this.name=名称;   这一点。学生=学生;   }   公共年级(){   超级();   }   @Override   公共字符串toString () {   返回“年级(id=" +身份证+ " name=" +名字+”,学生=" +学生+ "]”;   }   公共int getId () {   返回id;   }   公共空间setId (int id) {   这一点。id=id;   }   公共字符串getName () {   返回名称;   }   公共空间setName(字符串名称){   this.name=名称;   }   公共ArrayListgetStus () {   返回学生;   }   公共空间setStus (ArrayList学生){   这一点。学生=学生;   }      }      之前      

JSON官方的解析最具有通用性,但是有点小麻烦。

        公开课JSONTest {//解析JSON   @Test   公共空间test1()抛出JSONException {//对象嵌套数组嵌套对象   字符串json1=" {“id”: 1、“名称”:“javaee - 1703”,“学生”:[{“id”: 101年,“名字”:“刘一”,“年龄”:16}]}”;//数组   字符串json2="['北京’,‘天津”,“杭州“]”;//1,//解析第一层——对象   JSONObject jObject1=new JSONObject (json1);   年级年级=new年级();   grade.setId (jObject1.getInt (" id "));   grade.setName (jObject1.getString("名称"));   ArrayList,学生=new ArrayList<的在();   grade.setStus(学生);//解析第二层——数组   JSONArray jsonArray2=jObject1.getJSONArray(“学生”);//遍历数组获取元素——对象   for (int i=0; i< jsonArray2.length();我+ +){//解析第三层——对象   JSONObject jObject3=jsonArray2.getJSONObject(我);   学生学生=新学生(jObject3.getInt (" id "), jObject3.getString(“名字”),jObject3.getInt("年龄"));   grade.getStus阀门()(学生);   }      System.out.println(年级);//获取当前对象的所有属性的迭代器对象//Iterator迭代器=jObject1.keys ();//当(iterator.hasNext ()) {//字符串键=iterator.next ();//System.out.println(“属性:“+键);//}//2,//获取数组对象   JSONArray jArray JSONArray=new (json2);   ArrayList,列表=new ArrayList<的在();//遍历获取元素   for (int i=0; i< jArray.length();我+ +){//jArray.optString (i);//等价于getXXX   list.add (jArray.getString (i));   }   System.out.println(“解析结果:“+列表);   }//生成JSON   @Test   公共空间test2()抛出JSONException {   JSONObject jo1=new JSONObject ();   jo1。put (" id ", 1001);   jo1。把(“名字”、“范老”);   jo1。(“时代”,20);   JSONObject jo2=new JSONObject ();   jo2。put (" id ", 1002);   jo2。把(“名字”、“平平”);   jo2。(“时代”,19);   JSONArray ja2 JSONArray=new ();   ja2.put (jo1);   ja2.put (jo2);   JSONObject jo3=new JSONObject ();   jo3。put (" id ", 11);   jo3。put(“名字”,“javaee——1704”);   jo3.put(“学生”,ja2);   json字符串=jo3.toString ();   System.out.println (json);      }      }      

GSON解析是谷歌的,也比较好用

        公开课GSONTest {//解析   @Test   公共空间test1 () {//对象嵌套数组嵌套对象   字符串json1=" {“id”: 1、“名称”:“javaee - 1703”,“学生”:[{“id”: 101年,“名字”:“刘一”,“年龄”:16}]}”;//数组   字符串json2="['北京’,‘天津”,“杭州“]”;      Gson Gson=new Gson ();//1,//解析对象:第一个参数:待解析的字符串第二个参数结果数据类型的类对象   年级年级=gson.fromJson (json1 Grade.class);   System.out.println(年级);//2,//解析数组要求使用类型   ArrayList

基于JAVA中的四种JSON解析方式详解