私は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で簡単なプロジェクトを作って、それがうまく動作します。私はその後、私は
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
を受け取るしかし、さまざまな展開(複数のWARおよびEJB JARファイルとEAR)と他のプロジェクトで使用
私は、web.xmlに初期化パラメータを置けば
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
json serialization works、 ただし、@JsonSerialize
注釈は機能しません。
一方、NetbeansプロジェクトではPOJOMappingFeature
は必要ありません。
これら2つのアプリケーションの違いは何ですか?
1つのアプリケーションにPOJOMappingFeature
が必要で、もう1つでは違いがありますか?
です。Nice catch、thanks :-) – jabal