2010-05-20 42 views
3

是否有一個簡單的方法用於RESTEasy中的String []或List的編組和解組?RESTEasy - 簡單的字符串數組/集合編組

我的代碼示例:

@GET 
@Path("/getSomething") 
@Produces(MediaType.APPLICATION_JSON) 
public List<String> getSomeData() { 
    return Arrays.asList("a","b","c","d"); 

} 

上面給了我一個例外:

Could not find MessageBodyWriter for response object 
of type: java.util.Arrays$ArrayList of media type: application/json 

回答

1

我有XML和JSON同樣的問題。還沒有找到解決方案,但我認爲它與JAXB有關。

所以事實證明,問題是JAXB已經與JDK6和JBoss的依賴關係不正確。他們應該爲此找到另一個解決方案,即現在如何完成。任何這怎麼是你如何解決這個問題:

<!-- JAXB Reasteasy support --> 
<dependency> 
    <groupId>org.jboss.resteasy</groupId> 
    <artifactId>resteasy-jaxb-provider</artifactId> 
<version>1.2.1.GA</version> 
<scope>compile</scope> 
<exclusions> 
    <exclusion> 
     <groupId>com.sun.xml.bind</groupId> 
     <artifactId>jaxb-impl</artifactId> 
    </exclusion> 
    <exclusion> 
     <groupId>com.sun.xml.stream</groupId> 
     <artifactId>sjsxp</artifactId> 
    </exclusion> 
</exclusions> 

你會得到RestEasy的JAXB提供商但是從行家不是JAXB文件。

4

您可能需要將其包裝像這樣:

public List<JaxbString> getList(){ 
    List<JaxbString> ret= new ArrayList<JaxbString>(); 
    List<String> list = Array.asList("a","b","c"); 
      for(String s:list){ 
       ret.add(new JaxbString(s)); 
      } 
    return ret; 
} 

@XmlRootElement 
public class JaxbString { 

    private String value; 

    public JaxbString(){} 

    public JaxbString(String v){ 
     this.setValue(v); 
    } 

    public void setValue(String value) { 
     this.value = value; 
    } 

    @XmlElement 
    public String getValue() { 
     return value; 
    } 

}