java中JSON的使用(4种解析方式,满满干货) |
您所在的位置:网站首页 › java怎么输入字符串类型数据格式 › java中JSON的使用(4种解析方式,满满干货) |
又到了周末整理季,其实这周学了很多东西,但是还未动手实践,所以就拿部分学到的进行整理。话不多说,上第一个知识点:JSON。 什么是JSON?肯定很多人都会心里回答,一种数据交换格式,没毛病,JSON就是一种轻量级的数据交换格式,与开发语言无关。 JSON的数据结构呢? 简单说了一下JSON的概述,下面摆上这篇文章的重点:Java中JSON的使用。 Java中并没有内置JSON的解析,因此使用JSON需要借助第三方类库。经过总结,一共4种方式,下面围绕每种方式生成和解析进行阐述: 1.JSON官方 2.GSON:谷歌开发的 JSON 库,功能十分全面。 3.FastJSON:阿里巴巴开发的 JSON 库,性能十分优秀。 4.Jaskon:社区十分活跃且更新速度很快。 1.使用JSON官方提供的JSON官方提供的JSON具有通用性,就是解析时有点费事。反正我不用,哈哈。 maven依赖: org.json json 20180130生成JSON对象 1.使用JSONObject添加对象 代码: @Test public void Test3(){ //创建JSON对象 JSONObject jsonObject = new JSONObject(); Object obj = null; //像JSON对象中添加数据 jsonObject.put("name", "张三"); jsonObject.put("age", 20); jsonObject.put("birth", "1998-01-01"); jsonObject.put("haveCar", obj); jsonObject.put("hasGirlfriend", true); jsonObject.put("likes", new String[]{"看电影", "看书"}); //将JSON对象以字符串的形式打印 System.out.println(jsonObject.toString()); }结果:
JavaBean TO JSON: public static void beanToJsonTest() { User user = new User(); user.setName("张三"); user.setAge(20); user.setLikes(new String[]{"看电影", "看书"}); JSONObject jsonObject = new JSONObject(user); System.out.println(jsonObject.toString()); }解析JSON 首先有两张表,分别是学生表和年级表,年纪和学生是一对多关系,这里我就不展示表了,太简单了。直接上解析代码:(不懂一定要看注释哦!) //JSON字符串 String json = "{'id':1,'name':'JAVAEE-1703','stus':[{'id':101,'name':'刘一','age':16},{'id':102,'name':'刘二','age':23}]}"; //将JSON字符串转为JSON对象 JSONObject jsonObject = JSONObject.fromObject(json); //创建年级对象,然后进行解析JSON,并赋值 Grade grade = new Grade(); grade.setId(jsonObject.getInt("id")); grade.setName(jsonObject.getString("name")); //创建一个集合用来存储学生对象 ArrayList students = new ArrayList(); JSONArray stus = jsonObject.getJSONArray("stus"); //遍历JSONArray对象,解析后放入集合中 for (Object o : stus) { JSONObject jsonObject1 = JSONObject.fromObject(o); Student student = new Student(jsonObject1.getInt("id"),jsonObject1.getString("name"), jsonObject1.getInt("age")); students.add(student); } grade.setStus(students) ; //至此一个JSON字符串解析为Java对象 2.使用GSON依赖 com.google.code.gson gson 2.8.2生成JSON对象: public static void beanToJsonTest() { User user = new User(); user.setName("张三"); user.setAge(20); user.setLike(new String[]{"看电影", "看书"}); /** * 使用GsonBuilder 可以作一些额外处理,比如格式化输出,预处理等 * * GsonBuilder gsonBuilder = new GsonBuilder(); * gsonBuilder.setPrettyPrinting(); * Gson gson = gsonBuilder.create(); */ Gson gson = new Gson(); System.out.println(gson.toJson(user)); }解析JSON public static void jsonToBeanTest() { String jsonStr = "{\"name\":\"李四\",\"age\":22 , \"like\":[\"看电影\",\"看书\"],\"birth\":\"1996-01-01\"}"; GsonBuilder gsonBuilder = new GsonBuilder(); // 设置日期转换格式 gsonBuilder.setDateFormat("yyyy-MM--dd"); Gson gson = gsonBuilder.create(); //解析对象:第一个参数:待解析的字符串 第二个参数结果数据类型的Class对象 User user = gson.fromJson(jsonStr, User.class); }不用get取值,set赋值了,看起来好爽啊。有没有? String json2 = "['北京','天津','杭州']"; //解析数组要求使用Type ArrayList list=gson.fromJson(json2, new TypeToken(){}.getType()); System.out.println(list); 3.使用FastJSONFastJSON是阿里巴巴的产品,效率最高,深受广大程序员的喜爱,哈哈。但这里有很多东西我这里只写一下上面的老套路,生成和解析。想更多了解的可以去看这个FastJson。超赞的。 依赖 com.alibaba fastjson 1.2.47生成JSON对象: 创建JSON 对象非常简单,只需使用 JSONObject(fastJson提供的json对象) 和 JSONArray(fastJson提供json数组对象) 对象即可。 @Test public void whenGenerateJson_thanGenerationCorrect() throws ParseException { JSONArray jsonArray = new JSONArray(); for (int i = 0; i |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |