fastjson list enum

List转Json

List<User> users = new ArrayList();
String str = JSON.toJSONString(users); // List转json

Json 转List 方法一

String json = ""; //获取的Json数据
List<User> users = JSON.parseObject(json, new TypeReference<List<User>>(){}); // Json 转List

Json 转List方法二

List<User> users = JSON.parseArray(json, User.class); 

 

Json enum

fastjon默认对enum对象使用WriteEnumUsingName属性,因此会将enum值序列化为其Name。

如果将节省enum序列化后的大小,可以将enum序列化其ordinal值,保存为int类型。fastJson在反序列化时,如果值为int,则能够使用ordinal值匹配,找到合适的对象。
fastjson要将enum序列化为ordinal只需要禁止WriteEnumUsingName feature。
首先根据默认的features排除WriteEnumUsingName,然后使用新的features序列化即可。

int features = SerializerFeature.config(JSON.DEFAULT_GENERATE_FEATURE, SerializerFeature.WriteEnumUsingName, false)
JSON.toJSONString(obj, features, SerializerFeature.EMPTY);

 

Fastjson是一种Java语言编写的JSON解析库,它可以将Java对象转换为JSON格式的数据,并且可以将JSON格式的数据转换为Java对象。在Fastjson中,枚举类型默认转换为枚举类型的名称,而不是枚举值。如果需要将枚举类型转换为枚举值,可以使用@JSONField注解来指定序列化和反序列化时使用的枚举值。例如: ```java public enum Gender { MALE("M"), FEMALE("F"); private String value; Gender(String value) { this.value = value; } public String getValue() { return value; } @JSONField(serializeUsing = GenderSerializer.class, deserializeUsing = GenderDeserializer.class) public static Gender fromValue(String value) { for (Gender gender : Gender.values()) { if (gender.getValue().equals(value)) { return gender; } } return null; } } public class GenderSerializer implements ObjectSerializer { @Override public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException { Gender gender = (Gender) object; serializer.write(gender.getValue()); } } public class GenderDeserializer implements ObjectDeserializer { @Override public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) { String value = parser.parseObject(String.class); return (T) Gender.fromValue(value); } @Override public int getFastMatchToken() { return JSONToken.LITERAL_STRING; } } ``` 在上面的例子中,通过@JSONField注解指定了序列化和反序列化时使用的枚举值,同时实现了GenderSerializer和GenderDeserializer来进行序列化和反序列化。这样,就可以将枚举类型转换为枚举值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值