- 浏览: 1088084 次
- 性别:
- 来自: 杭州
-
文章分类
- 全部博客 (399)
- C++ (39)
- Java (74)
- Java界面开发学习笔记 (4)
- Java用户的c++之旅 (0)
- 自言自语 (12)
- DSP (1)
- MCU (0)
- CG (0)
- Jabber (0)
- Gloox (0)
- Linux (11)
- Windows (19)
- Networks (4)
- Jobs (0)
- PHP (1)
- JSP (2)
- 生活 (35)
- C (2)
- Qt4 (2)
- C# (50)
- WPF (5)
- ASP (2)
- FLEX (47)
- SQL (20)
- JavaScript (12)
- SharePoint (6)
- GWT (1)
- Dojo (9)
- HTML (11)
- Others (7)
- 如何安装配置系列 (7)
- UML (2)
- Android (3)
- alibaba (1)
最新评论
-
zxjlwt:
学习了http://surenpi.com
Firefox插件开发: Hello World! -
ylldzz:
楼主知道MVEL怎么调试么
MVEL简介及快速使用 -
blueman2012:
您好,可否提供源码下载,我把您的代码贴过来后,好多报错的,谢谢 ...
Log4J日志解析 -
svygh123:
你的游标都没有关闭呢!
MYSQL游标嵌套循环示例 -
dizh:
写的很好啊
MVEL简介及快速使用
这两天项目接近冒烟阶段,没时间作详细描述。将关键类列举如下:
序列化的Adapter:
/** * @author lanbo.xj * */ public class CarTypeAdapter implements JsonSerializer<Car> { private static Gson gson = new Gson(); @Override public JsonElement serialize(Car car, Type type, JsonSerializationContext context) { JsonObject jo = new JsonObject(); jo.add(car.getClass().getName(), gson.toJsonTree(car, car.getClass())); return jo; } }
反序列化的Adapter:
/** * @author lanbo.xj * */ public class CarListTypeAdapter implements JsonDeserializer<List<Car>> { @Override public List<Car> deserialize(JsonElement je, Type type, JsonDeserializationContext context) throws JsonParseException { List<Car> cars = new ArrayList<Car>(); JsonArray jsonArr = je.getAsJsonArray(); for (Iterator<JsonElement> iter = jsonArr.iterator(); iter.hasNext();) { JsonObject jo = (JsonObject) iter.next(); for (Entry<String, JsonElement> entry : jo.entrySet()) { String className = entry.getKey(); try { @SuppressWarnings("rawtypes") Class clazz = null; clazz = Class.forName(className); System.out.println(clazz.getName()); Car car = context.deserialize(entry.getValue(), clazz); cars.add(car); } catch (ClassNotFoundException e) { e.printStackTrace(); } } } return cars; } }
测试类:
public class GsonTest { public static void main(String[] args) { JeepCar car1 = new JeepCar(); car1.setPrice(1000); car1.setSpeed(200); MotorCar car2 = new MotorCar(); car2.setPrice(2000); car2.setYear(1999); List<Car> cars = new ArrayList<Car>(); cars.add(car1); cars.add(car2); GsonBuilder gb = new GsonBuilder().serializeNulls(); Type baseType = new TypeToken<List<Car>>(){}.getType(); gb.registerTypeAdapter(baseType, new CarListTypeAdapter()); gb.registerTypeAdapter(JeepCar.class, new CarTypeAdapter()); gb.registerTypeAdapter(MotorCar.class, new CarTypeAdapter()); Gson gson = gb.create(); String str = gson.toJson(cars); System.out.println(str); List<Car> cars3 = gson.fromJson(str, baseType); System.out.println(((JeepCar)cars3.get(0)).getSpeed()); } }
发表评论
-
Interesting interview question…
2011-06-23 19:10 1498Today I was asked this questi ... -
简单易用的Web框架:SummerCool介绍
2011-05-10 19:01 4775SummerCool是国内某大型电子商务平台的架构师自 ... -
[转]Eclipse插件:Java AST View
2011-05-06 16:03 4643转载:http://www.blogjava.net/life ... -
Eclipse之Debug技巧
2011-05-02 15:30 1590你认为你的eclipse debug技能都学会了吗?能够熟 ... -
AccessController.doPrivileged 小记
2011-04-29 20:29 2115原文:http://blog.csdn.net/tea ... -
推荐一个下载源码的网站
2011-04-29 20:26 1284http://olex.openlogic.com/ 这个网 ... -
Java解析xml禁止校验dtd
2011-04-27 21:34 8449今天在做log4j.xml解析的时候,指定了如下的dtd声明: ... -
区分getName、getCanonicalName与getSimpleName
2011-04-27 18:34 5786举例,现有一个类如下: package com.sha ... -
Log4J日志解析
2011-04-25 16:12 7105在有些场景下,需要解析Log4J的日志,以为己用。比如,根据 ... -
分享个不错的网站:看JSON字符串的利器
2011-04-20 20:09 1346分享个不错的网站:看JSON字符串的利器or胸器 http: ... -
Regex:密码验证
2011-04-13 18:45 20454.当且仅当含数字和字母的密码验证 如果密码当且仅当 ... -
JDBC操作数据库时切记关闭资源
2011-04-08 18:14 1921Error: No ManagedConnectio ... -
JDBC:如何将resultset的信息自动封装到pojo里面
2011-04-08 10:32 4340不多说了 直接上代码 Java代码 p ... -
Maven自动升级版本号并打包上传的脚本
2011-04-02 09:52 7573同事写的自动升级版本并打包上传的脚本: echo of ... -
在ibatis中使用$value$引入变量会引入SQLInjection漏洞
2011-04-01 16:26 2336(1)sql语法中的_关键字_.如果sql语句中出现存在用户输 ... -
EqualsBuilder和HashCodeBuilder
2011-03-31 19:30 2249自动化hashCode()和equals() 问题产生:当需 ... -
Eclipse中的Stack Trace Console的使用
2011-03-15 14:47 3058很多的Java程序员(特别是开发Web程序的时候),通常在 ... -
System.out.format的使用
2011-01-21 12:34 4821JDK5.0允许象C语言那样直接用printf()方法来格式化 ... -
jhat的简单使用
2011-01-18 19:41 2917leak一般会发生在容器类保存对象引用而不删除的时候,替代方法 ... -
关于变更eclipse中maven插件的repository路径
2011-01-10 10:02 17301.打开eclipse 2.window-->ref ...
相关推荐
gson-2.8.6.jar下载,gson是Google开发的一款优秀的Java JSON解析库。它可以将Java对象转换成JSON字符串,也可以将JSON字符串转换成...8. 高性能:gson通过流式API、缓存策略以及基于类型的Maass抽象序列化类来提高性能。
Jackson的性能也非常高,同时支持注解,允许开发者通过注解自定义序列化和反序列化的行为。 这四个库各有优势,选择哪一个取决于具体的应用场景和需求。例如,如果需要高性能和简洁的API,Fastjson可能是最佳选择;...
`gson-2.2.4.jar`是Gson的一个版本,它支持复杂的数据结构,包括泛型、自定义序列化和反序列化规则,以及日期和时间的处理。Gson的强大在于其灵活性和易用性,使得JSON与Java对象之间的转换变得非常简单。 3. **...
JSON(JavaScript Object Notation)是一种轻量级的数据交换...在使用这些库时,需要注意选择合适的版本,以确保与所用的Java环境和其他依赖库兼容。同时,理解并熟练运用其API,能够更好地进行JSON相关的开发工作。
1. 支持自定义序列化和反序列化的逻辑。 2. 可以处理泛型类型和复杂嵌套的对象结构。 3. 提供了注解,允许开发者控制哪些字段参与转换。 4. 支持将JSON直接转换为Java对象,以及将Java对象写入JSON格式的输出流。 *...
Fastjson是Java语言编写的高性能、完善的JSON库,可将Java对象与JSON格式的字符串进行相互转换,即序列化和反序列化。Fastjson采用独创算法,其解析速度在众多JSON库中表现卓越,甚至超过了被称为最快的Jackson库...