fastjson 常用的方法

本文介绍 FastJSON 的核心功能,包括序列化与反序列化的具体应用案例,并解释如何将 Java 对象转换为 JSON 格式及从 JSON 格式还原为 Java 对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

fastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器,来自阿里巴巴的工程师开发。

主要特点:

  • 快速FAST (比其它任何基于Java的解析器和生成器更快,包括jackson

  • 强大(支持普通JDK类包括任意Java Bean Class、Collection、Map、Date或enum)

  • 零依赖(没有依赖其它任何类库除了JDK)


FastJSON是一个Java语言编写的高性能,功能完善,完全支持http://json.org的标准的JSON库

在使用之前必须下载这个包:fastjson-1.1.37.jar 或fastjson-1.1.39.jar (注意JDK的版本哦!)

一.序列化就是把JavaBean对象转成JSON格式的字符串

/**
 * 实体类
 * 
 * @author Administrator
 * 
 */
public class Student {
	private String name; // 用户名
	private int age; // 年龄
        ............
}

 具体的使用如下:
/**
	 * (1)将实体对象转换成JSON对象 
	 * String str_json = JSON.toJSONString(stu);
	 */
	public static void entityToJSON() {
		// 对象
		Student stu = new Student("zhangsan", 20);

		// 将对象转换成JSON对象
		String str_json = JSON.toJSONString(stu);

		// 输出
		System.out.println("实体转化为Json" + str_json);

	}


/**
	 * (2)将List对象转换成JSON对象
          String json = JSON.toJSONString(list, true);
	 */
	public static void listToJSON() {
		List<Student> list = new ArrayList<Student>();
		Student userinfo1 = new Student("mike", 25);
		Student userinfo2 = new Student("boy", 26);
		list.add(userinfo1);
		list.add(userinfo2);
		// true:是格式化样式
		String json = JSON.toJSONString(list, true);
		System.out.println("List集合转json格式字符串 :" + json);
	}

/**
	 * (4)将复杂数据类型转换成JSON对象
	 * 	String jsonString = JSON.toJSONString(map,true);
	 *
	 */
	public static void MoreToJSON() {
		// map集合
		HashMap<String, Object> map = new HashMap<String, Object>();
		map.put("uname", "小飞");
		map.put("age", 21);
		map.put("sex", "F");

		// map集合
		HashMap<String, Object> temp = new HashMap<String, Object>();
		temp.put("name", "小明");
		temp.put("age", "23");

		// 将temp添加map集合中
		map.put("girlInfo", temp);

		// list集合
		List<String> list = new ArrayList<String>();
		list.add("aaa");
		list.add("bbb");
		list.add("ccc");

		// 将list添加map集合中
		map.put("hobby", list);

		String jsonString = JSON.toJSONString(map,true);

		System.out.println("复杂数据类型:" + jsonString);
	}


/**
	 * (6)通过JSON将日期格式化
	 * 

	 */
	public static void formatDate() {
		
		//日期
		 Date date= new Date();
		
		 String str = JSON.toJSONString(date);
		 System.out.println("输出毫秒:"+str);
		 
		 String dstr=JSON.toJSONString(date, SerializerFeature.WriteDateUseDateFormat);
		 System.out.println("输出默认格式:"+dstr);
		 
		 String zstr=JSON.toJSONStringWithDateFormat(date,"yyyy-MM-dd", SerializerFeature.WriteDateUseDateFormat);
		 System.out.println("自定义格式:"+zstr);

	}



二.反序列化就是把JSON格式的字符串转化为Java Bean对象。


/**
	 * (3)将字符数组转换成JSON对象 
	 * JSONArray array = JSONArray.parseArray(string);
	 */
	public static void StringArrayToJSON() {
		String string = "[['熊二',20],null,['翠花',21]]";
		JSONArray array = JSONArray.parseArray(string);
		System.out.println("数组:" + array);
		System.out.println("数组长度: " + array.size());

	}


/**
	 * (5)将JSON对象转换成实体对象
	 * 	Student stu = JSON.parseObject(json, Student.class);

	 */
	public static void JsonToEntity() {
		
		//json
		String json="{'name':'girl',age:20}";
		
		//  将JSON转换成实体对象
		Student stu = JSON.parseObject(json, Student.class);

		// 输出
		System.out.println("Json转化为实体:" + stu);

	}


总之:学习更多的方法的使用,查看API!!

<think>根据用户的问题,用户希望获取FastJson常用方法和类的Java代码示例。结合之前的引用内容,特别是引用[2]和引用[3]中提到了FastJson常用方法,我将整理一些核心的类和常用方法的代码示例。 注意:引用[1]提到Fastjson是Java中常用的JSON处理库,用于序列化和反序列化;引用[2]提到了FastJson的40个常用方法;引用[3]提到了使用`JSON.toJSONString`方法并可以传入特性配置。 我将重点展示以下内容: 1. 序列化(Java对象转JSON字符串) 2. 反序列化(JSON字符串转Java对象) 3. 常用配置和特性 4. 其他常用方法 由于引用中并没有给出具体的代码示例,我将根据Fastjson的常见用法编写示例代码。 注意:用户要求使用中文回答,并且代码示例需要正确。</think>以下是FastJson常用方法及类的Java代码示例,涵盖核心功能和典型应用场景: ### 1. 基础序列化与反序列化 ```java import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; // Java对象 → JSON字符串 Person person = new Person("张三", 25); String jsonStr = JSON.toJSONString(person); // 结果: {"age":25,"name":"张三"} // JSON字符串 → Java对象 Person obj = JSON.parseObject(jsonStr, Person.class); System.out.println(obj.getName()); // 输出: 张三 // JSON字符串 → JSONObject JSONObject jsonObj = JSON.parseObject(jsonStr); System.out.println(jsonObj.getInteger("age")); // 输出: 25 ``` ### 2. 集合处理 ```java // List序列化 List<Person> list = Arrays.asList( new Person("李四", 30), new Person("王五", 28) ); String listJson = JSON.toJSONString(list); // 结果: [{"age":30,"name":"李四"},{"age":28,"name":"王五"}] // List反序列化 List<Person> parsedList = JSON.parseArray(listJson, Person.class); ``` ### 3. 特性配置(SerializerFeature) ```java // 格式化输出 String prettyJson = JSON.toJSONString(person, SerializerFeature.PrettyFormat); /* 输出: { "age":25, "name":"张三" }*/ // 日期格式化 person.setBirthday(new Date()); String dateJson = JSON.toJSONStringWithDateFormat( person, "yyyy-MM-dd HH:mm:ss", SerializerFeature.WriteDateUseDateFormat ); ``` ### 4. 复杂类型处理 ```java // 泛型反序列化 Type type = new TypeReference<Map<String, Person>>() {}.getType(); Map<String, Person> map = JSON.parseObject( "{\"emp1\":{\"age\":25,\"name\":\"张三\"}}", type ); ``` ### 5. JSONPath操作 ```java // 数据提取 JSONObject data = JSON.parseObject("{\"store\":{\"book\":[{\"price\":35}]}}"); Object price = JSONPath.eval(data, "$.store.book[0].price"); // 返回35 // 数据修改 JSONPath.set(data, "$.store.book[0].price", 40); ``` ### 6. 注解控制 ```java @JSONField(name = "full_name", ordinal = 1) private String name; @JSONField(serialize = false) // 序列化时忽略 private String password; @JSONField(format = "yyyy/MM/dd") private Date birthday; ``` ### 核心类说明 | **类名** | **用途** | |------------------|-----------------------------------| | `JSON` | 核心工具类(序列化/反序列化) | | `JSONObject` | 动态JSON对象(类似Map) | | `JSONArray` | JSON数组容器 | | `JSONPath` | JSON路径查询语言 | | `TypeReference` | 泛型类型处理 | | `SerializerFeature` | 序列化特性配置枚举 | > 提示:使用`@JSONField`注解可定制字段序列化行为,如名称映射、格式化和忽略字段等[^3]。性能优化建议对大对象启用`SerializerFeature.IgnoreNonFieldGetter`特性减少反射开销[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值