Wie erzeugt JSON-schema aus einer JAXB annotierte Klasse?

Ich habe eine entity-Klasse sieht wie folgt aus.

@XmlRootElement
public class ImageSuffix {

    @XmlAttribute
    private boolean canRead;

    @XmlAttribute
    private boolean canWrite;

    @XmlValue;
    private String value;
}

Und ich bin mit der folgenden Abhängigkeit für JSON-generation.

<dependency>
  <groupId>com.fasterxml.jackson.jaxrs</groupId>
  <artifactId>jackson-jaxrs-json-provider</artifactId>
  <version>2.1.4</version>
</dependency>

Wenn ich habe versucht, mit folgenden code (die genannten von Generierung von JSON-Schemas mit Jackson)

@Path("/imageSuffix.jsd")
public class ImageSuffixJsdResource {

    @GET
    @Produces({MediaType.APPLICATION_JSON})
    public String read() throws JsonMappingException {

        final ObjectMapper objectMapper = new ObjectMapper();

        final JsonSchema jsonSchema =
            objectMapper.generateJsonSchema(ImageSuffix.class);

        final String jsonSchemaString = jsonSchema.toString();

        return jsonSchemaString;
    }
}

Server beschwert sich mit folgenden Fehlermeldung

java.lang.IllegalArgumentException: Class com.googlecode.jinahya.test.ImageSuffix would not be serialized as a JSON object and therefore has no schema
        at org.codehaus.jackson.map.ser.StdSerializerProvider.generateJsonSchema(StdSerializerProvider.java:299)
        at org.codehaus.jackson.map.ObjectMapper.generateJsonSchema(ObjectMapper.java:2527)
        at org.codehaus.jackson.map.ObjectMapper.generateJsonSchema(ObjectMapper.java:2513)

Wie kann ich dieses Problem beheben?

  • FYI - Wir sind derzeit hinzufügen dieser Unterstützung zu MOXy s JSON-Bindung. Sie können verfolgen, diese Arbeit mit dem folgenden link: bugs.eclipse.org/404452
InformationsquelleAutor Jin Kwon | 2013-04-10
Schreibe einen Kommentar