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/FastJSON/Home
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/FastJSON/Home
如果获得Fastjson?
SVN:http://code.alibabatech.com/svn/fastjson/trunk/
WIKI:http://code.alibabatech.com/wiki/display/FastJSON/Home
Issue Tracking:http://code.alibabatech.com/jira/browse/FASTJSON
SVN:http://code.alibabatech.com/svn/fastjson/trunk/
WIKI:http://code.alibabatech.com/wiki/display/FastJSON/Home
Issue Tracking:http://code.alibabatech.com/jira/browse/FASTJSON
2、主要的使用入口
Fastjson API入口类是com.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON类上的静态方法直接完成。
public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON文本parse为JavaBean public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本parse成JavaBean集合 public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本 public static final String toJSONString(Object object, boolean prettyFormat); //将JavaBean序列化为带格式的JSON文本 public static final Object toJSON(Object javaObject); //将JavaBean转换为JSONObject或者JSONArray public static final <T> T toJavaObject(JSON json, Class<T> clazz) ; //将JsonObject转换为JavaBean
3、有关类库的一些说明
SerializeWriter:相当于StringBuffer
JSONArray:相当于List<Object>
JSONObject:相当于Map<String, Object>
JSON反序列化没有真正数组,本质类型都是List<Object>
4、fastjson还有很多很高级的特性,比如支持注解、支持全类型序列化,这些都是很好的特性,功能强大,不在本次测试范围。
下面是一个基于fastJson的json序列化例子
private static class JsonZkSerializer implements ZkSerializer { private static Logger logger = Logger.getLogger(JsonZkSerializer.class); @Override public byte[] serialize(Object data) throws ZkMarshallingError { try { String type = data.getClass().getName(); Object jsonObject = JSON.toJSON(data); JSONObject json = new JSONObject(); json.put("classType", type); json.put("data", jsonObject); return json.toJSONString().getBytes(); } catch (Exception e) { logger.error("JsonZkSerializer serialize error", e); return null; } } @Override public Object deserialize(byte[] bytes) throws ZkMarshallingError { try { String jsonStr = new String(bytes); JSONObject json = (JSONObject) JSON.parse(jsonStr); Class classType = Class.forName(json.get("classType").toString()); System.out.println(classType); return JSON.toJavaObject((JSON) json.get("data"), classType); } catch (Exception e) { logger.error(e); return null; } } }
Map<String, Map<String, Integer>> timeSpanData = new HashMap<String, Map<String, Integer>>(); timeSpanData.put("test1", new HashMap<String, Integer>()); timeSpanData.get("test1").put("v1", 1); timeSpanData.put("test2", new HashMap<String, Integer>()); timeSpanData.get("test2").put("v2", 1); timeSpanData.put("test3", new HashMap<String, Integer>()); timeSpanData.get("test3").put("v3", 1); System.out.println(timeSpanData); String str = JSON.toJSONString(timeSpanData); System.out.println(str); timeSpanData = new HashMap<String, Map<String, Integer>>(); JSONObject appJson = JSON.parseObject(str); for (String appName : appJson.keySet()) { JSONObject serviceJson = (JSONObject) appJson.get(appName); timeSpanData.put(appName, new HashMap<String, Integer>()); for (String rpcName : serviceJson.keySet()) { timeSpanData.get(appName).put(rpcName, serviceJson.getInteger(rpcName)); } } System.out.println(timeSpanData);
相关推荐
### SQL注入绕WAF小结 #### 一、概述 SQL注入是一种常见的Web应用程序安全漏洞,攻击者通过向Web应用程序提交恶意SQL语句来获取敏感数据、修改数据或执行其他非法操作。随着网络安全技术的发展,Web应用防火墙...
在实际开发中,我们不仅可以通过Fastjson将Java对象转换为JSON,还可以反向操作,即将JSON字符串解析为Java对象,这在数据交换和序列化过程中非常有用。 总结来说,JSON是一种强大的数据交换格式,广泛应用于Web...
5.6 课后小结: 理解序列化不仅包括其基本原理,还要关注其在实际应用中的安全性和版本兼容性问题,以及如何根据项目需求选择合适的序列化策略。 5.7 课后习题和5.8 上机实训: 设计练习题和上机操作,以加深对序列...
### 小结 在漏洞管理的过程中,资产发现和自动化漏洞评估是非常重要的两个步骤。通过有效的资产发现,组织可以更好地了解自身所拥有的资源及其潜在的风险点;而自动化漏洞评估则可以帮助快速识别并修复漏洞,降低...
小结 该说的在前文也说了,总而言之,spring已经为我们的session共享提供了很好的支持,我们只需好好利用它就好了。 在此demo源码奉上:http://download.csdn.net/detail/zhrxidian/9520968。 5.后记 前些天遇到一...