2016-04-25 5 views
0

Ich versuche, einen Beispiel-REST-Server mit Trikot zu machen. Ich bin in der Lage, eine einfache String retrun aber wenn ich versuche, ein Array ich diesen Fehler zurückRückgabe eines Arrays mit Jersey

A message body writer for Java class [C, and Java type class [C, and MIME media type application/json was not found. 

Ich habe auch versucht @XMLRootElement aber das Problem bleibt hinzuzufügen. Dies ist mein Code:

@Path("/test") 

public class Test { 

    @GET 
    @Produces(MediaType.APPLICATION_JSON) 
    public char[] getHello() { 

     char[] test = { 'd', 'e', 'c', 'a', 'f', 'f', 'e', 
       'i', 'n', 'a', 't', 'e', 'd' }; 
     return test; 
    } 
} 

Edit: pom.xml hinzugefügt

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>HospitalServer</groupId> 
    <artifactId>HospitalServer</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>war</packaging> 

    <repositories> 
     <repository> 
      <id>maven2-repository.java.net</id> 
      <name>Java.net Repository for Maven</name> 
      <url>http://download.java.net/maven/2/</url> 
      <layout>default</layout> 
     </repository> 
    </repositories> 

    <dependencies> 

     <dependency> 
      <groupId>com.sun.jersey</groupId> 
      <artifactId>jersey-server</artifactId> 
      <version>1.8</version> 
     </dependency> 

    </dependencies> 

    <build> 
    <sourceDirectory>src</sourceDirectory> 
    <plugins> 
     <plugin> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>3.3</version> 
     <configuration> 
      <source>1.8</source> 
      <target>1.8</target> 
     </configuration> 
     </plugin> 
     <plugin> 
     <artifactId>maven-war-plugin</artifactId> 
     <version>2.6</version> 
     <configuration> 
      <warSourceDirectory>WebContent</warSourceDirectory> 
      <failOnMissingWebXml>false</failOnMissingWebXml> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
</project> 
+0

Bitte zeigen Sie Ihre 'pom.xml' an. –

+0

Beitrag bearbeitet, pom.xml hinzugefügt – user3235881

+0

Nur neugierig, warum verwenden Sie die neueste Java-Version mit einer der ältesten Versionen von Jersey? –

Antwort

1

Sie noch einen JSON-Provider müssen sich ändern Denken Sie daran, sein Objekt zu JSON Serialisierung handhaben. Sie brauchen keinen für String, da das Serialisieren von String zum Ausgabe-Stream trivial ist, so dass Jersey das alleine bewältigen kann. So fügen Sie einfach die folgende

<dependency> 
    <groupId>com.sun.jersey</groupId> 
    <artifactId>jersey-json</artifactId> 
    <version>1.8</version> 
</dependency> 

konfigurieren Dann ist es in Ihrem web.xml

<init-param> 
    <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name> 
    <param-value>true</param-value> 
</init-param> 

Fügen Sie diese auf Ihre Jersey Servlet-Konfiguration. Möglicherweise benötigen Sie auch this also.

Sobald Sie dies haben, können Sie immer noch nicht mit char[] umgehen. Dies ist nur ein Problem mit Jackson nicht in der Lage, diesen Typ zu behandeln. Aber es kann String[] oder List<String>, List<Character> oder POJOs behandeln, und eine fast jede andere Art, die Sie benötigen. Ich bin mir nicht ganz sicher, aber ich denke, es könnten nur primitive Skalar-Arrays sein, mit denen es ein Problem hat.

0

Try Charakter verwenden [] anstelle von char []

+0

löst es nicht das Problem – user3235881

0

Super-Roh-Test geben, wenn es nicht obligatorisch, ein Array von Zeichen zu verwenden, versuchen Sie den Typ in String zu ändern, auch wenn Sie einzelne Zeichen senden. es könnte ein Problem mit dem char Einweiser

@Path("/test") 
public class Test { 

@GET 
@Produces(MediaType.APPLICATION_JSON) 
public List<String> getHello() { 
    return Arrays.asList("a", "b"); 
} 

zu doublequotes

+0

Es ist nicht obligatorisch, ich möchte nur ein Beispiel machen. Ich habe deinen Code kopiert und es funktioniert nicht, ich habe es mit einem einfachen String versucht und es hat wieder funktioniert. – user3235881

+0

Gleicher Fehler? Ich habe den Code nicht versucht ... Vielleicht habe ich einen dummen Fehler gemacht – rick

+0

Vereinfacht den Test – rick