JSON
- json是什么
- 它是js提供的一种数据交换格式!
json的语法
- {}:是对象!
- > 属性值:
- > 属性名必须使用双引号括起来!单引不行!!!
- null
- 数值
- 字符串
- 数组
- Boolean值: true/false
Json应用
Json与XML的对比
- 可读性:XML胜出
- 解析难度:JSON本身就是JS对象(主场作战),所以简单很多
- 流行度:XML已经流行好多年,但在AJAX领域,JSON更受欢迎。
json-lib
- 是什么?
- 它可以把javabean转换成json串
- jar包
- fastjson-1.1.37.jar
- 链接:https://pan.baidu.com/s/1HS1HqJo6y43sWqrvw5OORA 密码:1i9v
- 核心类
- JSONObject –> Map
> toString();
> JSONObject map = JSONObject.fromObject(person):把对象转换成JSONObject对象 - JSONArray –> List
- > toString()
> JSONArray jsonArray = JSONArray.fromObject(list):把list转换成JSONArray对象
演示代码:
/** * 演示JSON-LIB小工具 */ public class Demo1 { /* * 当map来用 */ @Test public void fun1() { JSONObject map = new JSONObject(); map.put("name", "zhangSan"); map.put("age", 23); map.put("sex", "male"); String s = map.toString(); System.out.println(s); } /* * 当你已经有一个Person对象时,可以把Person转换成JSONObject对象 */ @Test public void fun2() { Person p = new Person("liSi", 32, "female"); // 把对象转换成JSONObject类型 JSONObject map = JSONObject.fromObject(p); System.out.println(map.toString()); } /** * JSONArray */ @Test public void fun3() { Person p1 = new Person("zhangSan", 23, "male"); Person p2 = new Person("liSi", 32, "female"); JSONArray list = new JSONArray(); list.add(p1); list.add(p2); System.out.println(list.toString()); } /** * 原来就有一个List,我们需要把List转换成JSONArray */ @Test public void fun4() { Person p1 = new Person("zhangSan", 23, "male"); Person p2 = new Person("liSi", 32, "female"); List<Person> list = new ArrayList<Person>(); list.add(p1); list.add(p2); System.out.println(JSONArray.fromObject(list).toString()); } }
4,Fastjson是什么
- 阿里巴巴公司开源的速度最快的Json和对象转换工具
- fastjson入口类是com.alibaba.fastjson.JSON,
主要API是JSON.toJSONString和parseObject,
- 使用fastjson要注意要转换的类必须有默认的无参构造方法。
5.导包
- com.alibaba.fasthson.JSON
6.举例
- 将对象类型转换成为字符串
User.java
public class User { private int id; private String username; private String password; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
测试类
public class UserTest { @Test public void fun() { User user = new User(); user.setId(2); user.setUsername("rose"); user.setPassword("123"); // 使用JSON的 toJSONString 方法 传入对象 String jsonString = JSON.toJSONString(user); System.out.println(jsonString); } }
运行后结果:
{"id":2,"password":"123","username":"rose"}
2.将集合类型转换成为字符串
依旧使用上面的User实体类
测试类:
public class UserTest { @Test public void fun() { ArrayList<User> list = new ArrayList<User>(); // 第一个对象 User user = new User(); user.setId(2); user.setUsername("rose"); user.setPassword("123"); // 将第一个对象添加到集合中去 list.add(user); // 第二个对象 User user2 = new User(); user2.setId(12); user2.setUsername("jack"); user2.setPassword("1234"); // 将第二个对象添加到集合中去 list.add(user2); //list中此时有两个元素 String jsonString = JSON.toJSONString(list); System.out.println(jsonString); } }
运行后结果:
[{"id":2,"password":"123","username":"rose"}, "id":12,"password":"1234","username":"jack"}]
- 将Json文本数据信息转换为JsonObject对象,然后利用键值对的方式获取信息
测试类:
public class UserTest { @Test public void fun() { // str是一个json的文本数据 ,“\”为 双引号的转移符号 String str = "{\"name\":\"rose\"}"; JSONObject jsonObject = JSON.parseObject(str); System.out.println(jsonObject.get("name")); } }
将Json文本数据转换为JavaBean数据
注意:这里的Json文本信息中的键的名称必须和JavaBean中的字段名称一样
键中没有的在这个JavaBean中就显示为null
测试类
public class UserTest { @Test public void fun() { String str = "[ {\"username\":\"rose\",\"password\":\"321\"}", {\"username\":\"jerry\",\"password\":\"123\"}" ]; User user = JSON.parseObject(str, User.class); System.out.println(user.getUsername()+":"+user.getPassword()); } }
运行后的结果:
rose:321
- 将JSON文本转换为JavaBean的集合;
测试类
public class UserTest { @Test public void fun() { String str = "[{\"username\":\"rose\",\"password\":\"321\"}," + "{\"username\":\"jerry\",\"password\":\"123\"}]"; List<User> list = JSON.parseArray(str, User.class); for (User u : list) { System.out.println(u.getUsername()+":"+u.getPassword()); } }
运行后的结果:
rose:321 jerry:123
- 将日期对象转换为字符串
测试类
public class UserTest { @Test public void fun() { Date date = new Date(); System.out.println("date=" + date); String jsonString = JSON.toJSONString(date); System.out.println("--------------"); String dateFormat = JSON.toJSONStringWithDateFormat(date, "yyyy-MM-dd: hh:mm:ss"); System.out.println("dateFormat:"+dateFormat); }
运行后的结果:
date=Wed Aug 22 19:08:06 CST 2018 <hr /> dateFormat:"2018-08-22: 07:08:06"
使用Maven进行搭建依赖
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.1.37</version> </dependency>