JSON语法规则
-
数据由键(key)/值(value)描述,由逗号分隔
-
大括号代表- -个完整的对象,拥有多个键/值对
-
中括号保存数组,多个对象之间使用逗号分隔
{
"sites": [
{ "name":"google" , "url":"www.google.com" },
{ "name":"微博" , "url":"www.weibo.com" }
]
}
使用 JSON.parse() 方法将数据转换为 JavaScript 对象
解析前要确保数据是标准的 JSON 格式,否则会解析出错。
var obj = JSON.parse('{ "name":"ican", "alexa":10000, "site":"www.baidu.com" }');
使用 JSON.stringify() 方法将 JavaScript 对象转换为字符串
var obj = { "name":"ican", "alexa":10000, "site":"www.baidu.com"};
var myJSON = JSON.stringify(obj);
//数组转换
var arr = [ "Google", "Runoob", "Taobao", "Facebook" ];
var myJSON = JSON.stringify(arr);
FastJSON
引入依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>2.0.7</version>
</dependency>
建立实体类对象
private Integer empno;
private String ename;
private String job;
@JSONField(name = "hiredate" , format="yyyy-MM-dd") //name属性为要输出的key的名字
private Date hdate;
private Float salary;
@JSONField(serialize=false) //不对dname序列化
private String dname;
FastJSON对象序列化与反序列化
Employee employee = new Employee();
employee.setEmpno(4488);
employee.setEname("王晓东");
employee.setJob("客户经理");
employee.setSalary(10000f);
employee.setDname("市场部");
Calendar C = Calendar.getInstance();
c.set(2019, 0, 30,0,0, 0);
employee.setHdate(c.getTime());
//FastJSON中提供了JSON对象,完成对象与JSON字符串的互相转换
String json = JSON.toJSONString(employee);
System.out.println(json);
//反序列化
//如果属性名称和Employee属性能够对应上的话 那就会自动填写上去 JSON字符串转换为类
Employee emp = JSON.parseObject(json,Employee.class)
FastJSON对象数组序列化与反序列化
如何对一百个员工生成完整的JSON块呢?
List emplist = new ArrayList();
for (int i = 1; i<= 100; i++) {
Employee employee = new Employee();
employee.setEmpno(4488 + i);
employee.setEname("员工"+ i);
emplist.add(employee);
}
JSON对象不单可以对单个对象序列化,也能够对数组、List、Set这种集合进行序列化。如果属性值为null,则FastJSON自动忽略掉。
String json = JSON.toJSONString(emplist);//生成一个数组
//[{" empno" :4489,”ename":"员工1","empno" :4490, "ename" :"员工2"},...]
如何把一个JSON数组转换为Java对象?
List<Employee> emps = JSON.parseArray(json,Employee.class); //该方法自动生成一个List
for(Employee e : emps) {
System.out.println(e.getEmpno() + ":" + e.getEname()) ;
}