我有一個JAX-RS資源,我想使用@JsonSerialize(using=MySerializer.class)
爲java.util.Calendar
屬性使用自定義JSON序列化程序。GlassFish JAX-RS Jackson自定義JSON序列化
import java.util.Calendar;
import org.codehaus.jackson.map.annotate.JsonSerialize;
public class FooBar {
@JsonSerialize(using=MySerializer.class)
private Calendar calendar;
public FooBar() {
calendar = Calendar.getInstance();
}
public Calendar getCalendar() {
return calendar;
}
}
MySerializer.java:
import java.io.IOException;
import java.util.Calendar;
import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.JsonProcessingException;
import org.codehaus.jackson.map.JsonSerializer;
import org.codehaus.jackson.map.SerializerProvider;
public class MySerializer
extends JsonSerializer<Calendar>
{
@Override
public void serialize(Calendar c, JsonGenerator jg, SerializerProvider sp)
throws IOException, JsonProcessingException
{
jg.writeString("fooBar Calendar time: " + c.getTime());
}
}
我在NetBeans 7.1做了一個簡單的項目,它工作得很好。
當我使用它在不同的部署(多WAR和EJB JAR的EAR)的其他項目,然後我收到
javax.ws.rs.WebApplicationException: com.sun.jersey.api.MessageException: A message body writer for Java class
com.example.FooBar and MIME media type application/json was not found
但如果我投入web.xml中的初始化參數
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
json序列化工作, 但@JsonSerialize
註釋不起作用。
另一方面,Netbeans項目不需要POJOMappingFeature
。
這兩個應用程序有什麼區別?
在一個應用程序需要POJOMappingFeature
而另一個不需要時有什麼區別?
好的,趕上,謝謝:-) – jabal