文章目录
前言一、基本语法1.格式要求2.value的取值语法3.JSON对象与字符串相互转换 二、取值示例1.构造数据2.读取数据 总结
前言
本文主要介绍java解析多层嵌套json数据以及字符串与JSON对象之间的相互转换,包括:json字符串的取值,json对象与字符串的相互转换,字符串转化为java对象,字符串转化为javaList列表等。
提示:以下是本篇文章正文内容,下面案例可供参考
一、基本语法
1.格式要求
数据格式:JSON实际上就是键值对(“key” : “value”)数据要求:key必须是字符串,value可以是字符串、数字、对象、数组、布尔值或null2.value的取值语法
字符串,jsonObject.getString(“key”)数字,jsonObject.getIntValue(“key”) 或者 jsonObject.getInteger(“key”) 与之对应的数据类型布尔值,jsonObject.getBooleanValue(“key”)数组,jsonObject.getJSONArray(“key”)Object 对象,jsonObject.get(“key”)JSONObject 对象,jsonObject.getJSONObject(“key”)3.JSON对象与字符串相互转换
用的是fastjson解析,pom文件<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>2.0.0</version></dependency>
Object对象转Json字符串:JSON.toJSONString(Object object); JSONObject jsonObject = buildJSONObject(); // 构造的json对象String jsonString = JSON.toJSONString(jsonObject);
Json字符串转Object对象:JSON.parseObject(String str); JSONObject jsonObject = buildJSONObject(); // 构造的json对象String jsonString = JSON.toJSONString(jsonObject);JSONObject jsonObject1 = JSON.parseObject(jsonString);
将字符串转为JSONArray:JSON.parseArray(arrayStr); String arrayStr = "......";JSONArray array = JSON.parseArray(arrayStr);
将字符串转为具体的单个java对象:JSON.parseObject(String text, Class clazz); String userString = "{\"name\":\"libai\"}";User user1 = JSON.parseObject(userString, User.class);// 或者User user2 = JSON.parseObject(userString).toJavaObject(User.class);// 再或者使用JSONObject替换JSON也可,即JSONObject.parseObject(userString, User.class);@Datastatic class User { private String name;}
将字符串转为具体的java List列表:JSONObject.parseArray(“字符串”).toJavaList(User.class); String userListString = "[{\"name\":\"1\"},{\"name\":\"12\"}]";List<User> userList = JSONObject.parseArray(userListString).toJavaList(User.class);
二、取值示例
1.构造数据
构造如下数据,有字符串、数组、对象等
private static JSONObject buildJSONObject() { // 构造JSONObject对象 JSONObject jsonObject = new JSONObject(); // value为字符串及数字 jsonObject.put("name", "website"); jsonObject.put("age", 18); // 构造JSONArray对象 JSONArray jsonArray = new JSONArray(); // JSONArray里面有JSONObject对象 JSONObject jsonArrayObject1 = new JSONObject(); jsonArrayObject1.put("name", "alibaba"); jsonArrayObject1.put("info", "www.alibaba.com"); JSONObject jsonArrayObject2 = new JSONObject(); jsonArrayObject2.put("name", "baidu"); jsonArrayObject2.put("info", "www.baidu.com"); jsonArray.add(jsonArrayObject1); jsonArray.add(jsonArrayObject2);// value为JSONArray对象 jsonObject.put("sites",jsonArray); JSONObject jsonObject2 = new JSONObject(); jsonObject2.put("name", "blog.csdn.net");// value为JSONObject对象 jsonObject.put("site", jsonObject2); return jsonObject;}
2.读取数据
取出 website 字符串及 18 数字System.out.println(jsonObject.get("name"));// 直接get返回的是Object对象System.out.println(jsonObject.getString("name"));// getString返回的是字符串System.out.println(jsonObject.getIntValue("age")); // getIntValue返回的是int类型
取出 blog.csdn.net,即对象里面的字符串 // 直接getJSONObject获取到site的对象,再getString获取name的值System.out.println(jsonObject.getJSONObject("site").getString("name"));
取出 alibaba,即数组里第一个对象里面的字符串 // getJSONArray获取sites的数组,再getJSONObject(0)获取数组中第一个对象,再getString获取name值System.out.println(jsonObject.getJSONArray("sites").getJSONObject(0).getString("name"));
总结
人生没有完满,始终存在残缺,自己的心地是自己的世界,活得不快乐,本质上源于自己的无能。一个人,应该有力量,将自己从一切沉重的、老旧的、无精打采的事物里拔出来,用不断的尝试、变通改变自己的境遇。