FastJSON的使用

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()) ;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值