2010-09-29 75 views
0

我正在使用RestEasy將實體添加到JSON中。這工作正常,但不知何故,每件事情都表現爲一個字符串。例如RestEasy和JSON - 如何避免數字周圍的引號?

@XmlRootElement(name="TestObject") 
public class TestObject { 
    private Long value; 
    public Long getValue(){ 
     return value; 
    } 
} 

而不是創造類似的:{TestObject:{value:1234}}

它創建{TestObject:{value:"1234"}}(請注意「」周圍數)

那麼長值轉換成字符串。我怎樣才能避免這種情況?

我在傑克遜論壇上問過哪些RestEasy用於JSON marchaling,但他們說這可能是由Java-> XML-> JSON引起的。 似乎沒有RestEasy論壇,在Seam論壇上沒有人能回答我的問題。

其他人是否也有同樣的問題?

問候

回答

1

好的問題是RestEasy的+ Seam使用拋棄默認(不傑克遜)。 Jettison通過Java-> XML-> JSON進行marchaling。

傑克遜罐子實際上並未包含在Seam發行版中,因此您必須下載RestEasy並將所有提及jackson的jar複製到您的lib目錄中。當RestEasy在類路徑中找到resteasy-jackson-provider.jar時,將使用Jackson而不是Jettison。

我從Jettison搬到傑克遜時遇到的一個問題是騎車參考。使用Jettison,您只需註釋該方法(例如@ManyToOne關係)與 @XmlTransient。對於傑克遜你有@JsonIgnore

+0

如果這是您的問題的答案,那麼請將其標記爲已接受,因此它不會出現在未回答的部分 – 2010-10-04 14:15:18

+0

否它沒有完全回答,這只是一種解決方法。當使用傑克遜而不是Jettison和RestEASY時,你會遇到問題,即陣列沒有貼上我需要的標籤。我想RestEASY主要是用Jettison測試的。 Jackson通過使用@JsonTypeInfo來支持數組的標籤,但在RestEASY執行包裝時會以某種方式丟失。 – Ben 2010-10-20 14:26:57

1

使用進行註解

<dependency> 
    <groupId>org.jboss.resteasy</groupId> 
    <artifactId>resteasy-jettison-provider</artifactId> 
    <version>2.0.1.GA</version> 
    <exclusions> 
     <exclusion> 
      <groupId>javax.xml.bind</groupId> 
      <artifactId>jaxb-api</artifactId> 
     </exclusion> 
     <exclusion> 
      <groupId>com.sun.xml.bind</groupId> 
      <artifactId>jaxb-impl</artifactId> 
     </exclusion> 
     <exclusion> 
      <groupId>javax.xml.stream</groupId> 
      <artifactId>stax-api</artifactId> 
     </exclusion> 
    </exclusions> 
</dependency> 

我只用RestEasy的,拋放提供商,但是當我試圖讓JSON輸出服務器掛起,但我不包括JAXB的API後JAXB-implement執行。使用JSON輸出webservice完全正常工作

相關問題