如何使Enunciate将我的数据类型显示为结构化JSON(而不是“自定义”)?

时间:2015-12-30 22:53:01

标签: json enunciate

我有这个简单的服务,它回显了一个包装在JSON对象中的ID参数:

@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生成的文档将服务的数据类型显示为“custom”。是否可以让Enunciate吐出更详细的返回类型说明,例如JSON表示?

3 个答案:

答案 0 :(得分:0)

如果将返回类型更改为javax.ws.rs.core.Response,则文档应将数据类型显示为JSON。

您需要稍微修改您的方法:

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

答案 1 :(得分:0)

向Job类添加注释

@javax.xml.bind.annotation.XmlRootElement

如果没有此注释,则enunciate会将DTO显示为" custom"或"文件"

答案 2 :(得分:0)

我使用简单的REST Jersey Web服务遇到了完全相同的问题。

以下是我返回的对象的注释(不再是):


    @XmlRootElement(name = "OReponseInitialiser")
    @XmlAccessorType(XmlAccessType.PUBLIC_MEMBER)
    @XmlType (name="OReponseInitialiser")
    public class OReponseInitialiser

网络服务声明:


      @POST
      @Consumes(MediaType.APPLICATION_JSON)
      @Produces(MediaType.APPLICATION_JSON)
      @Path ("initialiser")
      public OReponseInitialiser initialiser(@Context HttpServletRequest pRequete,  ...) throws OException

我使用ant任务构建文档

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