文档章节

fastjson常见用法

常氏孤儿
 常氏孤儿
发布于 2015/01/30 16:15
字数 618
阅读 214
收藏 1
package jms.test;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import jms.model.Dept;
import jms.model.Employee;
import org.junit.Test;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.alibaba.fastjson.serializer.SerializeConfig;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson.serializer.SimpleDateFormatSerializer;
import com.alibaba.fastjson.serializer.SimplePropertyPreFilter;
public class TestFastjson {
 //fastjson序列化单个对象 与反序列化
 @Test
 public void test1() {
  Employee e = new Employee("001", "张三", 23, new Date());
  
  //序列化
  String jsonStr = JSON.toJSONString(e);
  System.out.println(jsonStr);
  
  //反序列化
  Employee emp = JSON.parseObject(jsonStr, Employee.class);
  System.out.println(emp.getName());
 }
 
 //fastjson序列化list集合 与反序列化
 @Test
 public void test2() {
  Employee e = new Employee("001", "张三", 23, new Date());
  Employee e2 = new Employee("002", "李四", 29, new Date());  
  
  List<Employee> emps = new ArrayList<Employee>();
  emps.add(e);
  emps.add(e2);
  
  //fastjson序列化list, 返回来的是一个json数组,由[]包含两个json
  String jsonArryStr = JSON.toJSONString(emps);
  System.out.println(jsonArryStr);
  
//  //反序列化
  //法一
//  List<Employee> empList = JSON.parseObject(jsonArryStr, new TypeReference<List<Employee>>(){} );
  //法二
  List<Employee> empList = JSON.parseArray(jsonArryStr,Employee.class);
  for (Employee employee : empList) {
   System.out.println(employee.getName()); 
   System.out.println(employee.getBirthDay());
  }
  
  
 } 
 
 //fastjson序列化复杂对象 与反序列化
 @Test
 public void test3() {
  Employee e = new Employee("001", "张三", 23, new Date());
  Employee e2 = new Employee("002", "李四", 29, new Date());  
  
  List<Employee> emps = new ArrayList<Employee>();
  emps.add(e);
  emps.add(e2);
  
  Dept dept = new Dept("d001", "研发部", emps);
  //序列化
  String jsonStr = JSON.toJSONString(dept);
  System.out.println(jsonStr);
  
  //反序列化
  Dept d = JSON.parseObject(jsonStr, Dept.class);
  System.out.println(d.getName()); 
  
  //json转map
  //法一
  Map<String, Object> map1 = JSON.parseObject(jsonStr);//返回JSONObject,JSONObject实现Map<String, Object>接口
  //法二
//  Map<String, Object> map1 = (Map<String, Object>)JSON.parse(jsonStr);
  for (String key : map1.keySet()) {
   System.out.println(key + ":" + map1.get(key));
  }
 }
 
 //fastjson 的 JSONObject的使用 
 @Test
 public void test4() {
  Employee e = new Employee("001", "张三", 23, new Date());
  
  //序列化
  String jsonStr = JSON.toJSONString(e);
  System.out.println(jsonStr);
  
  //反序列化 (可以和test1比较)  
  JSONObject emp = JSON.parseObject(jsonStr, JSONObject.class);
  System.out.println(emp);
  System.out.println(emp.getString("name"));
  
  //再放一个Employee不存在的字段
  emp.put("salary", "8000");
  System.out.println(emp.toJSONString());
  System.out.println(emp.get("salary"));
  
 } 
 
 //fastjson序列化字符串
 @Test 
 public void test5(){
  
  List<String> strs = new ArrayList<String>();
  strs.add("hello");
  strs.add("world");
  strs.add("banana");
  
  //序列化
  String jsonStr = JSON.toJSONString(strs);
  System.out.println(jsonStr);
  
  //反序列化
  List<String> strList = JSON.parseObject(jsonStr, new TypeReference<List<String>>(){} );
//  List<String> strList = JSON.parseArray(jsonStr, String.class);//等同于上一句
  for (String str : strList) {
   System.out.println(str);
  }
 } 
 
 //fastjson过滤字段
 @Test
 public void test6() {
  
  Employee e = new Employee("001", "张三", 23, new Date());
  Employee e2 = new Employee("002", "李四", 29, new Date());  
  
  List<Employee> emps = new ArrayList<Employee>();
  emps.add(e);
  emps.add(e2);
  
  //构造过滤器
  SimplePropertyPreFilter filter = new SimplePropertyPreFilter(Employee.class, "id", "age");
  String jsonStr =JSON.toJSONString(emps, filter);
  
  System.out.println(jsonStr);
 }
 
 
 //fastjson 日期处理
 @Test 
 public void test7(){ 
  
  Date date = new Date();
  
  String dateStr = JSON.toJSONString(date);
  System.out.println(dateStr);
  
  String dateStr2 = JSON.toJSONStringWithDateFormat(date, "yyyy-MM-dd HH:mm:ss");
  System.out.println(dateStr2);
  
  //序列化实体
  Employee emp = new Employee("001", "张三", 23, new Date());
  
  //法一
  String empStr = JSON.toJSONStringWithDateFormat(emp, "yyyy-MM-dd HH:mm:ss");
  System.out.println(empStr);
  //法二
  String empStr2 = JSON.toJSONString(emp, SerializerFeature.WriteDateUseDateFormat);
  System.out.println(empStr2);
  
  //法三
  SerializeConfig config=new SerializeConfig();
  config.put(Date.class, new SimpleDateFormatSerializer("yyyy年MM月dd日 HH时mm分ss秒"));
  String empStr3 = JSON.toJSONString(emp, config);
  System.out.println(empStr3);
 }
 
 //fastjson 去掉值的双引号 实现JSONAware接口
 @Test 
 public void test8(){
  //见同级目录的Function.java
 } 
 
}

© 著作权归作者所有

常氏孤儿

常氏孤儿

粉丝 11
博文 8
码字总数 2405
作品 0
海淀
程序员
私信 提问
一次jdk 1.7 永久带oom信息定位

2018-11-11 线上机器永久带发生了oom,永久带oom大部分有关的就是反射,和类加载器不断新增(我是带着这个思维去找问题)。 2018-11-13 根据线上dump的堆栈信息,定位到发生oom的线程栈 2018...

年少爱追梦
2018/11/13
81
0
Json那点事儿

1.JSON介绍 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,JSON以key-value的形式提供了很好的读写,在web开发中之前用过xml来进行数据的交互和传输, 但xml的数据结构比较复...

陈小扁
2016/04/10
146
1
Fastjson 安全更新,建议升级到 1.2.28 或更新版本

安全升级公告 最近发现 fastjson 在 1.2.24 以及之前版本存在高危安全漏洞,为了保证系统安全,请升级到 1.2.28 或者更新版本。 更新方法 1. Maven 依赖配置更新 通过 maven 配置更新,使用最...

局长
2017/03/15
11.8K
9
Fastjson 爆出远程代码执行高危漏洞,更新版本已修复

fastjson近日曝出代码执行漏洞,恶意用户可利用此漏洞进行远程代码执行,入侵服务器,漏洞评级为“高危”。 基本介绍 fastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器,来自...

南湖船老大
2017/03/16
21.8K
28
.NET高级代码审计(第三课)Fastjson反序列化漏洞

0X00 前言 Java中的Fastjson曾经爆出了多个反序列化漏洞和Bypass版本,而在.Net领域也有一个Fastjson的库,作者官宣这是一个读写Json效率最高的的.Net 组件,使用内置方法JSON.ToJSON可以快速...

Ivan1ee
03/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

查看线上日志常用命令

cat 命令(文本输出命令) 通常查找出错误日志 cat error.log | grep 'nick' , 这时候我们要输出当前这个日志的前后几行: 显示file文件里匹配nick那行以及上下5行 cat error.log | grep -C ...

xiaolyuh
29分钟前
5
0
六、Java设计模式之工厂方法

工厂方法定义: 定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类,工厂方法让类的实例化推迟到子类中进行 类型:创建型 工厂方法-使用场景: 创建对象需要大量重复的代码 ...

东风破2019
36分钟前
5
0
win服务器管理遇到的一系列问题记录

有些小伙伴在使用iis7远程桌面管理工具的时候总是会遇到一系列的问题,下面就是为大家介绍一下服务器日常管理过程中出现的问题及我的解决办法和心得。希望能帮到大家。   拒绝服务器重新启...

1717197346
43分钟前
6
0
flutter 剪切板 复制粘贴

复制粘贴功能 import 'package:flutter/services.dart'; Clipboard.setData(ClipboardData(text:_text));Clipboard.getData;...

zdglf
45分钟前
4
0
如何保证消息的可靠性传输?或者说,如何处理消息丢失的问题?

面试题 如何保证消息的可靠性传输?或者说,如何处理消息丢失的问题? 面试官心理分析 这个是肯定的,用 MQ 有个基本原则,就是数据不能多一条,也不能少一条,不能多,就是前面说的重复消费...

米兜
46分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部