文章目录
- Json介绍
- 作者的Demo项目地址
- 常见的转化使用
- 测试json的添加属性,打印
- bean与json互转
- deepBean与json互转
- list与json互转
- map与json互转
- demo所用到的实体类
- Student
- Grade
- 个人使用的依赖
- 常用方法
- 其他
- 参考文档
Json介绍
-
1、JSONObject只是一种数据结构,可以理解为JSON格式的数据结构(key-value 结构),可以使用put方法给json对象添加元素。JSONObject可以很方便的转换成字符串,也可以很方便的把其他对象转换成JSONObject对象。
-
2、JSON(JavaScript Object Notation的首字母缩写)是一种轻量级数据交换格式,最常用于客户端 - 服务器通信。它既易于读/写,又与语言无关。JSON值可以是另一个JSON 对象,数组,数字,字符串,布尔值(true / false)或null。也是后端开发中经常要接触的一个一个类,将要数据封装成json然后传递给前端。
作者的Demo项目地址
作者的项目demo
常见的转化使用
测试json的添加属性,打印
public void jsonTest(){
//创建JSONObject
JSONObject json = new JSONObject();
//添加属性
json.put("username", "张三");
json.put("password", "123");
//打印
System.out.println(json);
//增加属性
json.element("sex", "男");
json.put("age", 18);
System.out.println(json);
//根据key返回输出
System.out.println(json.get("sex"));
}
bean与json互转
public void beanConvertJson(){
//定义对象
Student stu = new Student("张三", "123456");
//JavaBean对象转json字符串
JSONObject jsonObject = JSONObject.fromObject(stu);
System.out.println(jsonObject);
//json字符串转为javaBean
//定义json字符串
String jsondata = "{\"username\":\"李四\", \"password\":\"123\"}";
//转为json对象
JSONObject json = JSONObject.fromObject(jsondata);
//转为JavaBean对象,强转
Student stu2 = (Student)JSONObject.toBean(json, Student.class);
System.out.println(stu2.toString());
}
deepBean与json互转
// deepBean与json互转
public void deepBeanConvertJson(){
String jsondata = "{\"student\":{\"username\":\"李四\", \"password\":\"123\"},\"count\":20,\"name\":\"这是我的班级名\"}";
//转为json对象
JSONObject json = JSONObject.fromObject(jsondata);
//转为JavaBean对象,强转
Grade grade = (Grade)JSONObject.toBean(json, Grade.class);
System.out.println(grade.toString());
}
list与json互转
public void listConvertJson(){
//定义list集合
List list = new ArrayList();
list.add(new Student("张三", "123"));
list.add(new Student("李四", "456"));
//list转json字符串
JSONArray jsonArray = JSONArray.fromObject(list);
System.out.println(jsonArray);
//json字符串转list
List list2 = new ArrayList();
String jsondata = "[{\"password\":\"123\",\"username\":\"张三\"},{\"password\":\"456\",\"username\":\"李四\"}]";
JSONArray jsonArray1 = JSONArray.fromObject(jsondata);
for(int i = 0; i < jsonArray1.size(); i++) {
JSONObject jsonObject2 = jsonArray1.getJSONObject(i);
Student stu2 = (Student)JSONObject.toBean(jsonObject2, Student.class);
list2.add(stu2);
}
System.out.println(list2);
}
map与json互转
public void mapConvertJson(){
//定义map集合
Map map = new HashMap();
map.put("1", new Student("张三", "123"));
map.put("2", new Student("李四", "456"));
//Map转json字符串
JSONObject jsonMap = JSONObject.fromObject(map);
System.out.println(jsonMap);
//定义字符串map集合
String jsondata = "{\"1\":{\"password\":\"123\",\"username\":\"张三\"},\"2\":{\"password\":\"456\",\"username\":\"李四\"}}";
//map集合字符串转为map
Map map2 = (Map)JSONObject.fromObject(jsondata);
Set set = map2.keySet();
//定义迭代器,迭代输出
Iterator ite = set.iterator();
while(ite.hasNext()) {
//取出一个字符串对象
String key = (String)ite.next();
//转为json格式
JSONObject jsonObject = JSONObject.fromObject(map2.get(key));
//转为对象
Student stu = (Student)JSONObject.toBean(jsonObject, Student.class);
System.out.println(key+" "+stu);
}
}
demo所用到的实体类
Student
@AllArgsConstructor
@NoArgsConstructor
@Data
public class Student {
private String username;
private String password;
}
Grade
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Grade {
private Student student;
private Integer count;
private String name;
}
个人使用的依赖
- 本人用的是jDK8,classifier 也不能省略
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency>
常用方法
其他
- bean转化为json,依赖于bean上的get方法
- json转化为bean,依赖于bean上的set方法
- 这个bean上的 get和set方法,和springMVC有着异曲同工之妙。springMVC 把json转化为java中的对象存储就是通过json工具类
参考文档
- 【JSON解析】浅谈JSONObject的使用
- JSONObject详解