使用springmvc中的FastJsonHttpMessageConverter4无法将枚举序列化成ordinal,求救
[alibaba/fastjson]FastJsonHttpMessageConverter4无法将枚举序列化成ordinal
回答
@VictorZeng 帮忙看看
@liangzhongqiu 请提供一下test case
package com.alibaba.fastjson.support.spring;
import com.alibaba.fastjson.support.config.FastJsonConfig; import org.junit.Assert; import org.junit.Test; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpOutputMessage;
import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.OutputStream;
import static com.alibaba.fastjson.serializer.SerializerFeature.*;
/**
- @author Liangzhongqiu
- @date 2017/7/19 019
-
@time 21:25 */ public class FastJsonHttpMessageConverter4Test {
@Test public void write() throws IOException{ FastJsonConfig fastJsonConfig = new FastJsonConfig(); fastJsonConfig.setSerializerFeatures(QuoteFieldNames,SkipTransientField,SortField,IgnoreNonFieldGetter); FastJsonHttpMessageConverter4 fastJsonHttpMessageConverter4 = new FastJsonHttpMessageConverter4(); fastJsonHttpMessageConverter4.setFastJsonConfig(fastJsonConfig); User user = new User(Person.MAN,550101); HttpOutputMessage outputMessage = new HttpOutputMessage() {
OutputStream outputStream = new ByteArrayOutputStream(); HttpHeaders httpHeaders = new HttpHeaders(); @Override public OutputStream getBody() throws IOException { return outputStream; } @Override public HttpHeaders getHeaders() { return httpHeaders; } }; fastJsonHttpMessageConverter4.writeInternal(user, User.class, outputMessage);//模拟 Spring MVC 写出 String jsonString = outputMessage.getBody().toString();//输出 {"areaCode":550101,"person":"MAN"} 而不是期望的 {"areaCode":550101,"person":0} String expectJsonString = "{\"areaCode\":550101,\"person\":0}"; Assert.assertTrue(jsonString.equals(expectJsonString));}
}
enum Person{ MAN,WOMAN }
class User{
private Person person;
private Integer areaCode;
public User(){}
public User(Person person,Integer areaCode){
this();
this.person = person;
this.areaCode = areaCode;
}
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
public Integer getAreaCode() {
return areaCode;
}
public void setAreaCode(Integer areaCode) {
this.areaCode = areaCode;
}
}
@liangzhongqiu 这样或许能帮到你
JSON.DEFAULT_GENERATE_FEATURE = SerializerFeature.config(JSON.DEFAULT_GENERATE_FEATURE, SerializerFeature.WriteEnumUsingName, false);
@VictorZeng 谢谢,这样可以