我们在日常开发中少不了和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=名称; } 公共ArrayList getStus () { 返回学生; } 公共空间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解析方式详解