fastjson使用方法

1.fastjson介绍

fastjson是一个Java语言编写的JSON处理器, 由阿里巴巴公司开发

2.测试用到的类Person.java 和 Role.java

public class Person {
	private String pname;

	// 对指定属性不转换json
	@JSONField(serialize=false)
	private Role role;

	public String getPname() {
		return pname;
	}
	public void setPname(String pname) {
		this.pname = pname;
	}
	public Role getRole() {
		return role;
	}
	public void setRole(Role role) {
		this.role = role;
	}
}
public class Role {
	private String rname;
	private Person person;

	public String getRname() {
		return rname;
	}
	public void setRname(String rname) {
		this.rname = rname;
	}
	public Person getPerson() {
		return person;
	}
	public void setPerson(Person person) {
		this.person = person;
	}
}

3.测试Demo

public class Demo1 {

	// 对象转json
	@Test
	public void run1() {
		Customer c = new Customer();
		c.setCust_id(20L);
		c.setCust_name("测试");
		c.setCust_phone("120");

		// 对象转为json
		String jsonString = JSON.toJSONString(c);
		// 打印结果 {"cust_id":20,"cust_name":"测试","cust_phone":"120"}
		System.out.println(jsonString);
	}

	// 集合转json
	@Test
	public void run2() {
		List<Customer> list = new ArrayList<Customer>();
		Customer c = new Customer();
		c.setCust_id(20L);
		c.setCust_name("测试");
		c.setCust_phone("120");
		Customer c2 = new Customer();
		c2.setCust_id(30L);
		c2.setCust_name("测试2");
		c2.setCust_phone("1200");

		list.add(c);
		list.add(c2);

		// 集合转为json
		String jsonString = JSON.toJSONString(list);
		// 打印结果
		// [{"cust_id":20,"cust_name":"测试","cust_phone":"120"},{"cust_id":30,"cust_name":"测试2","cust_phone":"1200"}]
		System.out.println(jsonString);
	}

	// fastjson禁止循环引用
	@Test
	public void run3() {
		List<Customer> list = new ArrayList<Customer>();
		Customer c = new Customer();
		c.setCust_id(20L);
		c.setCust_name("测试");
		c.setCust_phone("120");

		list.add(c);
		list.add(c);

		// 集合转为json
		String jsonString = JSON.toJSONString(list);
		// 打印结果
		// [{"cust_id":20,"cust_name":"测试","cust_phone":"120"},{"$ref":"$[0]"}]
		System.out.println(jsonString);

		// 集合转为json
		String jsonString1 = JSON.toJSONString(list, SerializerFeature.DisableCircularReferenceDetect);
		// 打印结果
		// [{"cust_id":20,"cust_name":"测试","cust_phone":"120"},{"cust_id":20,"cust_name":"测试","cust_phone":"120"}]
		System.out.println(jsonString1);
	}

	// fastjson禁止循环引用
	// Person和Role互相引用导致的死循环问题
	@Test
	public void run4() {
		Person p = new Person();
		p.setPname("小明");
		Role r = new Role();
		r.setRname("管理员");
		p.setRole(r);
		r.setPerson(p);

		String jsonString = JSON.toJSONString(p, SerializerFeature.DisableCircularReferenceDetect);
		// 打印结果 如果不加注解 StackOverflowError
		// 打印结果 如果加上注解@JSONField(serialize=false) {"pname":"小明"}
		System.out.println(jsonString);
	}

}

4.FastJsonUtils工具类

public class FastJsonUtil {

	/**
	 * 将对象转成json串
	 * @param object
	 * @return
	 */
	public static String toJSONString(Object object) {
		// DisableCircularReferenceDetect来禁止循环引用检测
		return JSON.toJSONString(object, SerializerFeature.DisableCircularReferenceDetect);
	}

	/*
	 * 输出json
	 */
	public static void write_json(HttpServletResponse response, String jsonString) {
		response.setContentType("application/json;utf-8");
		response.setCharacterEncoding("UTF-8");
		try {
			response.getWriter().print(jsonString);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	/**
	 * ajax提交后回调的json字符串
	 * @return
	 */
	public static String ajaxResult(boolean success, String message) {
		Map map = new HashMap();
		map.put("success", success);// 是否成功
		map.put("message", message);// 文本消息
		String json = JSON.toJSONString(map);
		return json;
	}

	/**
	 * JSON串自动加前缀
	 * @param json 原json字符串
	 * @param prefix 前缀
	 * @return 加前缀后的字符串
	 */
	public static String JsonFormatterAddPrefix(String json, String prefix, Map<String, Object> newmap) {
		if (newmap == null) {
			newmap = new HashMap();
		}
		Map<String, Object> map = (Map) JSON.parse(json);

		for (String key : map.keySet()) {
			Object object = map.get(key);
			if (isEntity(object)) {
				String jsonString = JSON.toJSONString(object);
				JsonFormatterAddPrefix(jsonString, prefix + key + ".", newmap);
			} else {
				newmap.put(prefix + key, object);
			}

		}
		return JSON.toJSONString(newmap);
	}

	/**
	 * 判断某对象是不是实体
	 * @param object
	 * @return
	 */
	private static boolean isEntity(Object object) {
		if (object instanceof String) {
			return false;
		}
		if (object instanceof Integer) {
			return false;
		}
		if (object instanceof Long) {
			return false;
		}
		if (object instanceof java.math.BigDecimal) {
			return false;
		}
		if (object instanceof Date) {
			return false;
		}
		if (object instanceof java.util.Collection) {
			return false;
		}
		return true;
	}
}

  

 

 

时间: 2024-08-06 16:06:15

fastjson使用方法的相关文章

android fastjson使用方法 fastjson教程

OK.由于因为数据加密,还有网络请求的问题,需要把JSON解析从后台Service中转移到前台UI线程来解析.所以,我开发的时候极大 的考虑了json解析的速度.不然耗时太厉害的话UI线程卡顿.会让界面看起来卡一下,卡一下的. package com.commons.utils.json; import com.tencent.stat.common.User; import org.apache.commons.lang.StringUtils; import java.security.Pr

谈谈fastjson反序列方法JSON.parseObject(String text, Class&lt;T&gt; clazz)--来源于生产实践

fastjson这一工具包帮助我们进行java对象和json格式的字符串之间的相互转换.对象到字符串的过程,我们称之为序列化:反之,我们称为反序列化. 现在我们就来谈谈fastjson提供的反序列化方法,本篇只讨论按照指定的字节码返回相应对象的的反序列化方法,该方法有多种重载形式,按照重叠构造的模式设计.常用的入口为:JSON.parseObject(String text, Class<T> clazz),其调用链为: JSON.parseObject(String text, Class&

fastjson 使用方法

Fastjson介绍 Fastjson是一个Java语言编写的JSON处理器. 1.遵循http://json.org标准,为其官方网站收录的参考实现之一. 2.功能qiang打,支持JDK的各种类型,包括基本的JavaBean.Collection.Map.Date.Enum.泛型. 3.无依赖,不需要例外额外的jar,能够直接跑在JDK上. 4.开源,使用Apache License 2.0协议开源.http://code.alibabatech.com/wiki/display/FastJ

FastJson简单使用

 在工作中,经常客服端需要和服务端进行通信,目前很多项目都采用JSON的方式进行数据传输,简单的参数可以通过手动拼接JSON字符串,但如果请求的参数过多,采用手动拼接JSON字符串,出错率就非常大了.并且工作效率也特别低. 我在网上看了一些开源的JSON框架,比如Google提供的Gson,Jackson,FastJson等框架. 经过测试,个人觉得FastJson执行效率比较高,而且简单易用. FastJson不依赖于第三方包, 直接可以运行在Java JDK1.5之上,FastJson完

使用fastjson,gson解析null值的时候键保留

由于业务需求...所以查阅资料,总结如下: 使用gson实现方法:只需要把new Gson()改为: new GsonBuilder().serializeNulls().create(); 就可以了 public class Test { public static void main(String[] args) { Gson gson= new GsonBuilder().serializeNulls().create(); Map < String , Object > jsonMap

FastJSON的使用方法

FastJSON是阿里巴巴的出品的一个JSON类库,其功能强大,速度号称为当今最快,比net.sf.json,Google的GSON都要快.主要方法如下: public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray public static final JSONObject parseObject(String text): // 把JSON文本parse成JSONObject    

fast-json.jar的使用方法

fast-json.jar 解析json数据:一种json数据解析方式是这样的,点击这里下载jsonfast.jar+fastjsonAPI文档 [ { "id": 6378, "title": "test", "img": "http://image.jxvdy.com/2014/0929/5428d91c9e6dc8f78fd99_0.png", "score": 0, "

Fastjson序列化map时,保留map的进出栈顺序的方法

最近工作中遇到了这样的需求: 我用fastjson序列有序map的时候,tojson方法会让这个map无序,tojsonstring虽然能保留map的结构,不过会让结果里含有\(我是jsonStrin套jsonString,java会出现转义字符) 解决方案JSONObject有个传入boolean值的构造函数 如果传入的是true就代表保留数据结构的顺序 这时候我们可以吧要序列化的map放到我们创建的JSONObject对象里 最后再把我们的JSONObject对象放到最终的结果里 代码示例

fastjson生成json时Null属性不显示的解决方法

举个例子 Map < String , Object > jsonMap = new HashMap< String , Object>(); jsonMap.put("a",1); jsonMap.put("b",""); jsonMap.put("c",null); jsonMap.put("d","wuzhuti.cn"); String str = JSO