3

RESTEasy で String[] または List をマーシャリングおよびアンマーシャリングする簡単な方法はありますか?

私のコードサンプル:

@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
4

2 に答える 2

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;
    }

}
于 2010-10-21T07:25:29.583 に答える
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 プロバイダーは取得しますが、maven から JAXB ファイルは取得しません。

于 2010-06-10T08:36:41.123 に答える