2016-05-16 15 views
0

jerseyのデフォルトjsonマッパーは、リストの要素サイズが1のときにJSONオブジェクトを与え、要素のサイズが2以上のときにJSON配列を与えるので、jacksonをrest jerseyプロジェクトに追加しました。Rest jsonでジャクソン@typeが追加されていないJSON

ジャーソンのデフォルトjsonマッパー(デフォルトではidk)は、@ typeと呼ばれる諺を与えることができます.Jacksonを実装するとき、吹き出しはJSONリターンに追加されません。

私はウッシング前:@XmlRootElement で@XmlType(名=「型名」)は、今私は@JsonTypeInfo、ジャクソン2.5.4および2.22.2が、成功しません@JsonTypeNameにしようとしています。

@type proppertyを追加するにはどうすればよいですか?

編集1:

<servlet> 
    <servlet-name>jersey-servlet</servlet-name> 
    <servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class> 
    <init-param> 
     <param-name>com.sun.jersey.config.property.packages</param-name> 
     <param-value>my.package.webservice</param-value> 
    </init-param> 
    <init-param> 
     <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name> 
     <param-value>true</param-value> 
    </init-param> 
    <load-on-startup>2</load-on-startup> 
</servlet> 

編集2:(追加のweb.xml)web.xmlの

私はこれを持っているよう

jackson-jaxrs-json-provider:2.7.4 
jersey-media-json-jackson:2.22.2 
jackson-annotations:2.7.4 
jackson-jaxrs-base:2.7.4 
jackson-databind:2.7.4 
jackson-core:2.7.4 
jackson-module-jaxb-annotations:2.7.4 
jersey-entity-filtering:2.22.2 
jersey-common:2.22.2 
+0

どのサーバーを使用していますか? –

+0

私はJBoss AS 7.1.1を使用しています –

+0

あなたのジャクソン2.xが使用されていることを確認するための確認を行いましたか? AFAIK、Jackson 1.xはJBoss 7のデフォルトのJSONプロバイダです –

答えて

0

(ジャクソン・バージョンを追加する)@peeskillet言った:

Jackson 1.x is the default JSON provider in JBoss 7

私はクラス「my.package.MyApplication」を作成しなければならなかった

<servlet> 
    <servlet-name>jersey-servlet</servlet-name> 
    <servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class> 
    <init-param> 
     <param-name>javax.ws.rs.Application</param-name> 
     <param-value>my.package.MyApplication</param-value> 
    </init-param> 
    <init-param> 
     <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name> 
     <param-value>true</param-value> 
    </init-param> 
    <load-on-startup>2</load-on-startup> 
</servlet> 

:私はステップhere

を得た私は、このようにweb.xmlのサーブレットを変更し、7.1.1のJBoss ASからジャクソンを提供削除する必要がありました:

@ApplicationPath("resources") 
public class MyApplication extends PackagesResourceConfig { 

    public MyApplication() { 
     super("my.package.webservice;com.fasterxml.jackson.jaxrs.json"); 
    } 

} 

ジャクソン2.xは現在動作しています。私を助けてくれてありがとう@peeskillet。

は次のような@type呼ばpropperty作成しました:

@JsonProperty(value = "@type") 
String xmlType = "TypeName"; 

をそしてJSONは@typeのproppertyを返します。

関連する問題