- 浏览: 1078880 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (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 1459Today I was asked this questi ... -
简单易用的Web框架:SummerCool介绍
2011-05-10 19:01 4748SummerCool是国内某大型电子商务平台的架构师自 ... -
[转]Eclipse插件:Java AST View
2011-05-06 16:03 4621转载:http://www.blogjava.net/life ... -
Eclipse之Debug技巧
2011-05-02 15:30 1565你认为你的eclipse debug技能都学会了吗?能够熟 ... -
AccessController.doPrivileged 小记
2011-04-29 20:29 2082原文:http://blog.csdn.net/tea ... -
推荐一个下载源码的网站
2011-04-29 20:26 1255http://olex.openlogic.com/ 这个网 ... -
Java解析xml禁止校验dtd
2011-04-27 21:34 8409今天在做log4j.xml解析的时候,指定了如下的dtd声明: ... -
区分getName、getCanonicalName与getSimpleName
2011-04-27 18:34 5768举例,现有一个类如下: package com.sha ... -
Log4J日志解析
2011-04-25 16:12 7065在有些场景下,需要解析Log4J的日志,以为己用。比如,根据 ... -
分享个不错的网站:看JSON字符串的利器
2011-04-20 20:09 1314分享个不错的网站:看JSON字符串的利器or胸器 http: ... -
Regex:密码验证
2011-04-13 18:45 20134.当且仅当含数字和字母的密码验证 如果密码当且仅当 ... -
JDBC操作数据库时切记关闭资源
2011-04-08 18:14 1882Error: No ManagedConnectio ... -
JDBC:如何将resultset的信息自动封装到pojo里面
2011-04-08 10:32 4315不多说了 直接上代码 Java代码 p ... -
Maven自动升级版本号并打包上传的脚本
2011-04-02 09:52 7530同事写的自动升级版本并打包上传的脚本: echo of ... -
在ibatis中使用$value$引入变量会引入SQLInjection漏洞
2011-04-01 16:26 2317(1)sql语法中的_关键字_.如果sql语句中出现存在用户输 ... -
EqualsBuilder和HashCodeBuilder
2011-03-31 19:30 2225自动化hashCode()和equals() 问题产生:当需 ... -
Eclipse中的Stack Trace Console的使用
2011-03-15 14:47 3029很多的Java程序员(特别是开发Web程序的时候),通常在 ... -
System.out.format的使用
2011-01-21 12:34 4800JDK5.0允许象C语言那样直接用printf()方法来格式化 ... -
jhat的简单使用
2011-01-18 19:41 2895leak一般会发生在容器类保存对象引用而不删除的时候,替代方法 ... -
关于变更eclipse中maven插件的repository路径
2011-01-10 10:02 17041.打开eclipse 2.window-->ref ...
相关推荐
对于泛型数组,例如`T[]`,可以使用`TypeToken`来获取其类型信息,然后反序列化: ```java Type arrayType = new TypeToken[]>(){}.getType(); T[] myArray = gson.fromJson(jsonString, arrayType); ``` 5. *...
它的使用简单,支持复杂的类型转换,包括泛型、枚举、自定义序列化和反序列化策略。Gson的优势在于其灵活性和强大的类型处理能力,使得它在处理JSON数据时非常便捷。 2. Jackson(FasterXML Jackson): Jackson是...
在.NET框架中,反射、泛型和序列化是三个核心概念,它们对于开发高效、灵活且可维护的应用程序至关重要。让我们深入探讨这三个概念及其在.NET编程中的应用。 **反射** 反射是.NET框架提供的一种强大机制,它允许在...
在使用这些库时,确保添加了对应的jar依赖,如本压缩包中的lib文件,这样就可以在项目中直接调用相关API进行序列化和反序列化操作。记得在引入外部库时,避免版本冲突,确保与项目其他依赖兼容。此外,理解和掌握每...
Gson的主要功能是通过`Gson.toJson()`方法实现对象到JSON的序列化,以及`Gson.fromJson()`方法实现JSON到对象的反序列化。Gson还支持自定义类型转换器,可以满足定制化的需求。 3. **Jackson**:Jackson是由...
处理泛型类型时,可以使用`TypeToken`来帮助Gson识别真实类型: ```java List<User> userList = gson.fromJson(jsonArrayString, new TypeToken<List<User>>(){}.getType()); ``` 五、注意事项 1. 数据类型匹配:...
本工具正是为了解决在Unity5环境中,使用Protobuf进行Android和iOS平台的泛型列表参数的正反序列化问题。 首先,我们需要理解什么是序列化和反序列化。序列化是将对象转换为可传输或存储的格式,而反序列化则是将...
如果希望在序列化或反序列化过程中忽略某些字段,可以使用`@Expose`注解,并设置`serialize`和`deserialize`属性。 8. **字段命名策略** 默认情况下,Gson会根据字段名进行映射。如果字段名与JSON键不一致,可以...
4. **类型Token**:在反序列化泛型类型时,需要使用`TypeToken`来指定目标类型。 在"Android下用Gson示例"项目中的`GSONAndroidSample-master`可能包含了更具体的示例代码和使用场景,如保存和加载对象到...
`TypeToken` 是 Gson 提供的一个泛型安全的类型引用,用于在运行时捕获和表示类型信息。 除了默认行为外,Gson 还支持通过注解(Annotations)进行更精细的控制。例如,你可以使用 `@Expose` 注解来指定哪些字段...
Gson能够处理泛型类型,但是需要注意的是泛型信息在运行时会被擦除,因此需要特别的处理才能正确地序列化和反序列化泛型对象。 10. 内置序列化器和反序列化器 Gson自带了一些标准类型和集合的序列化器和反序列化...
在Java编程语言中,泛型(Generic)是一个强大的特性,它允许我们在编译时检查类型安全,并且可以消除运行时的类型转换。泛型引入的主要目的是提高代码的可读性和可维护性,同时减少类型转换的冗余。下面将详细讨论...
高效的序列化库对于处理大量数据或在网络间传输对象时至关重要。`protostuff`、`fastjson`和`gson`就是三个流行的Java序列化库,它们各自具有独特的特性和优势。 首先,让我们详细了解一下这三个库: 1. **...
2. **注解支持**:Gson支持使用Java注解来定制序列化和反序列化的规则。例如,`@Expose`注解可以标记哪些字段需要被序列化或反序列化,`@SerializedName`可以重命名JSON字段名,以适应不同的API规范。 3. **复杂...
5. **泛型处理**:Gson在处理泛型类型时非常强大,2.7版本可能会进一步优化这方面的性能,确保泛型类型的序列化和反序列化更加准确无误。 6. **运行时类型信息**:在某些情况下,Gson可以利用运行时的类型信息来...
Gson解析json,实现泛型解析数据,根据用户传入的类型,解析称用户需要的,Common \CommonList 里面的status message data相关的约定可以更具开发者与服务器的约定修改
当你处理泛型类型时,Gson需要知道具体的类型信息。这时,你可以使用`TypeToken`。例如: ```java Type type = new TypeToken<List<User>>(){}.getType(); List<User> users = gson.fromJson(jsonString, type)...
7. **TypeToken和Generics**: 当你需要序列化或反序列化泛型类型时,Gson需要知道确切的类型信息。这时,你可以使用`TypeToken`来捕获类型信息,因为它包含运行时的类型信息。 8. **注解支持**: Gson支持使用Java...
在Web服务中,泛型的使用通常涉及到序列化和反序列化。当我们需要通过Web服务传递泛型对象时,这些对象必须被转换成可以通过网络传输的格式,如XML或JSON。在C#中,我们可以使用ASMX或WCF服务来实现这一点。对于ASMX...
使用XML和TreeView显示影院放映列表 使用泛型集合维护有继承关系的电影票对象 座位数可以在系统中指定 ...使用简单工厂模式创建不同类型的电影票 使用多态实现不同类型...使用序列化和反序列化实现销售情况的保存和读取