Как сделать так, чтобы Enunciate отображал мой тип данных как структурированный JSON (а не как "пользовательский")?

У меня есть этот простой сервис, который отображает параметр ID, завернутый в объект JSON:

@Path("job")
public class JobResource {

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    @Path("{id}")
    public Job readById(@PathParam("id") long id) {
        Job j = new Job();
        j.id = id;
        return j;
    }

}

Возвращаемое значение Job класс объявлен как:

public class Job {
    public long id;
}

Документация, сгенерированная с помощью Enunciate, показывает тип данных сервиса как "пользовательский". Можно ли заставить Enunciate выложить более подробное объяснение возвращаемого типа, например, представление JSON?

3 ответа

У меня точно такая же проблема с простым веб-сервисом REST Jersey.

Вот аннотации моего возвращаемого объекта (не более):

    @XmlRootElement (name = "OReponseInitialiser")
    @XmlAccessorType (XmlAccessType.PUBLIC_MEMBER)
    @XmlType (name = "OReponseInitialiser")
    открытый класс OReponseInitialiser

И декларация веб-сервиса:

      @СООБЩЕНИЕ
      @Consumes(MediaType.APPLICATION_JSON)
      @Produces(MediaType.APPLICATION_JSON)
      @Path ("инициализатор")
      открытый инициализатор OReponseInitialiser(@Context HttpServletRequest pRequete,  ...) создает исключение OException

Я строю документацию с задачей муравья

<enunciate 
    basedir="${projet.repertoire}/src"
    buildDir="${enunciate.working.dir}"
    javacSourceVersion="1.8"
    javacTargetVersion="1.8"
    configFile="${projet.repertoire}/build_enunciate.xml"
    >
  <include name="**/*.java"/>
  <classpath refid="compile.classpath"/>
  <export artifactId="docs" destination="${docs.dir}"/>
</enunciate>

Если вы измените тип возврата на javax.ws.rs.core.Response затем в документации должен быть указан тип данных в формате JSON.

Вы должны будете немного изменить свой метод как:

...
return Response.status(Status.OK).entity(j).build();

Добавить аннотацию в класс Job

@javax.xml.bind.annotation.XmlRootElement

Без этой аннотации enunciate будет отображать DTO как "custom" или "file"

Другие вопросы по тегам