0 0

fastJson 关于枚举的转换问题,急求解答。5

UserBean userBean = new UserBean();
		userBean.setId(new Integer(1));
		userBean.setGender(Gender.Man);
		userBean.setCreateDate(new Date());
		SerializeWriter out = new SerializeWriter();
		SerializeConfig sc = new SerializeConfig();
		sc.put(Gender.class, new EnumSerializer() {
			@Override
			public void write(com.alibaba.fastjson.serializer.JSONSerializer arg0, Object arg1, Object arg2, Type arg3) throws IOException {
				arg0.write("为何枚举这样转换不成功");
			}
		});
		sc.put(Integer.class, new EnumSerializer() {
			@Override
			public void write(com.alibaba.fastjson.serializer.JSONSerializer arg0, Object arg1, Object arg2, Type arg3) throws IOException {
				arg0.write("Integer_1");
			}
		});
		sc.put(Date.class, new EnumSerializer() {
			@Override
			public void write(com.alibaba.fastjson.serializer.JSONSerializer arg0, Object arg1, Object arg2, Type arg3) throws IOException {
				arg0.write("时间~");
			}
		});
		JSONSerializer serializer = new JSONSerializer(out, sc);
//		serializer.config(SerializerFeature.WriteEnumUsingToString,false);
		serializer.write(userBean);
		System.out.println(out.toString());

理想的结果:{"createDate":"时间~","gender":"为何枚举这样转换不成功","id":"Integer_1"}
实际的结果:{"createDate":"时间~","gender":"Man","id":"Integer_1"}
---------------------
个人发现 :
如果是单个枚举或枚举集合、可以转换成功。
如果是对象里面的一个属性是枚举、这样无法转换成功。
---------------------
目的: 想让枚举也用自定义的转换。
弄了一天给跪了~~~

2014年4月09日 01:55

1个答案 按时间排序 按投票排序

0 0

我今天也遇到这个问题,但是我的JSON转换是自己写的。
这里给出解决的思路:
Class<?> type = f.getType();
if (type.isEnum()) {
Class<? extends Enum> enumType = (Class<Enum>) type;
value = Enum.valueOf(enumType, value.toString());
}
用Enum的静态方法根据常量字面值得到对应类型的枚举。

2014年7月03日 12:23

相关推荐

    【Gson+fastjson】json转换工具

    在Java开发中,为了方便地进行JSON与Java对象之间的转换,我们常常会使用到Gson和Fastjson这两个库。 **Gson库** Gson是Google提供的一款开源库,它能够将Java对象转换为JSON字符串,同时也能够将JSON内容反序列...

    fastjson,方便json转换

    实现json转换,fastjson json json转换,可以帮助开发中涉及json格式处理的程序猿。

    fastJson用于格式的转换

    虽然FastJson在性能上表现出色,但在早期版本中曾出现过安全问题。因此,使用时应确保使用最新版本,以避免潜在的安全风险。 总结起来,FastJson作为一个强大的JSON库,因其高效、易用和丰富的特性,被广泛应用于...

    通过fastjson实现各种格式与json之间的转换

    通过fastjson实现了JavaBean,list,MAP,list等格式与json格式之间的转换,已经附带fastjson的包,包的版本为fastjson-1.1.36.jar

    很好用的JAVA类转JSON工具:FastJSON (2).pdf

    FastJSON不仅支持将Java对象转换为JSON字符串,还能将JSON字符串反序列化为Java对象,极大地简化了Java与JSON之间的交互。在许多互联网应用中,FastJSON因其高效和简洁的API而被广泛使用。 在提供的代码示例中,...

    fastJSON

    博主通常会在这样的文章中分享关于如何使用fastJSON进行数据转换、优化性能以及解决常见问题的经验。由于没有实际内容可以引用,我们将基于fastJSON的一般知识来展开讨论。 1. **JSON简介**: JSON(JavaScript ...

    使用fastjson实现对象和json串之间的相互转换的jar包

    为了方便地在Java对象与JSON字符串之间进行转换,阿里巴巴开发并提供了Fastjson库。这个库因其高效、易用的特性,在Java社区中得到了广泛应用。 Fastjson是一个Java语言编写的高性能功能完备的JSON库,它能够快速地...

    fastJson依赖jar包

    快速JSON(Fastjson)是阿里巴巴开发的一个高性能的Java JSON库,它能解析JSON格式的数据,并将其转换为Java对象,反之亦然。Fastjson以其高效、轻量级的特点,在Java开发中广泛应用于数据交换和序列化场景。这个...

    fastjson1.2.7含源码

    Fastjson是阿里巴巴开发的一款高性能的Java JSON库,它能够实现JSON到Java对象的相互转换,极大地简化了Java程序处理JSON数据的过程。Fastjson1.2.7是该库的一个版本,包含了源码,使得开发者可以深入理解其内部实现...

    fastjson1.2.2.jar

    而Fastjson,由阿里巴巴公司开发,是一款性能优秀且易用的Java语言编写的JSON库,它能够实现Java对象与JSON数据之间的快速转换。本文将围绕Fastjson的核心特性、使用方法以及优化策略展开详细讲解。 一、Fastjson...

    Fastjson1.2.47以及之前的所有版本

    Fastjson能够将Java对象转换为JSON字符串,也能将JSON内容转换为对应的Java对象,使得在处理JSON数据时更加方便快捷。由于其性能优异,被广泛应用于各种Java应用中,包括Web服务、数据分析和移动应用等。 **...

    fastjson的一个小例子

    FastJson是阿里巴巴开源的一款高性能的JSON库,它主要用于Java对象与JSON字符串之间的转换。在这个小例子中,我们将深入探讨FastJson的使用方法,以及它如何帮助开发者在Android开发中快速处理JSON数据。 在Android...

    Fastjson源码包jar包(1.1.15)

    通过分析Fastjson源码,开发者可以深入理解其实现原理,如解析算法、类型转换策略等,这对于优化性能、解决特定问题或者扩展Fastjson功能都有很大帮助。在项目中,如果遇到Fastjson无法满足的需求,或者对性能有更高...

    阿里巴巴fastjson的jar包

    Fastjson在安全方面也做了很多工作,包括SQL注入防护、XSS防护等,以防止恶意输入导致的安全问题。然而,开发者仍需关注官方发布的安全更新,及时升级库版本,以保持应用的安全性。 **五、应用场景** Fastjson因其...

    fastjson-1.2.9

    对于想要对Fastjson进行扩展或者遇到问题需要追踪源码的人来说,这个文件是不可或缺的资源。 在Fastjson-1.2.9版本中,有一些值得注意的特性: 1. **性能优化**:Fastjson一直以其高性能著称,1.2.9版本中可能包含...

    FastJsonJar

    《FastJsonJar:Java开发中的高效JSON处理库》 FastJsonJar,正如其名,是一个专为Java开发者设计的高效JSON解析和生成工具。在现代Web服务和移动应用开发中,JSON作为数据交换格式,其使用频率之高不言而喻。...

    Android FastJSON小示例

    同样,FastJSON也支持将Java对象转换为JSON字符串: ```java import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.annotation.JSONField; import com.alibaba.fastjson.serializer.SerializerFeature; ...

    fastjson-1.2.5.jar包

    3. **自动类型转换**:Fastjson能自动将JSON数据转换为Java对象的相应字段,无需额外的类型转换代码。 4. **流式解析与生成**:除了传统的基于字符串的API,Fastjson还提供了流式API,适用于处理大量数据,降低了...

    fastjson-1.2.66_fastjson-1.2.66.jar_Fastjson_

    - **自动类型转换**:Fastjson在解析时会尝试自动转换类型,如将字符串转换为数字、日期等,简化了开发者的操作。 - **自定义转换器**:对于复杂的类型转换需求,Fastjson允许用户自定义`SerializerFeature`和`...

    fastjson-master源码

    理解并掌握Fastjson的内部工作原理,不仅能帮助我们编写更高效的代码,也能提升我们在Web开发中的问题解决能力。通过深入学习和实践,我们可以进一步挖掘Fastjson的潜力,让JSON操作更加得心应手。

Global site tag (gtag.js) - Google Analytics