CXF(即Apache CXF)是一個(gè)比較流行的Java Web Service框架,支持多種協(xié)議和數(shù)據(jù)格式,其中包括JSON格式的數(shù)據(jù)。在CXF中使用JSON格式數(shù)據(jù)需要使用注解來描述Java類。下面將介紹CXF中使用JSON注解的方法。
首先需要在pom.xml中加入以下依賴:
<dependency> <groupId>com.fasterxml.jackson.jaxrs</groupId> <artifactId>jackson-jaxrs-json-provider</artifactId> <version>2.12.4</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.12.4</version> </dependency>
接著,在Java類中使用@Produces和@Consumes注解,并指定MediaType為“application/json”:
@Path("/user") public class UserResource { @GET @Path("/{id}") @Produces(MediaType.APPLICATION_JSON) public User getUser(@PathParam("id") String id) { //... } @POST @Path("/") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) public User createUser(User user) { //... } }
在Java類中使用@Json注解可以設(shè)置JSON數(shù)據(jù)的各種屬性:
public class User { @JsonInclude(JsonInclude.Include.NON_NULL) private String name; @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") private Date birthday; //... }
@JsonInclude注解用于指定是否包含為null的屬性,NON_NULL表示不包含;@JsonFormat用于設(shè)置日期格式,其中pattern屬性指定日期格式為“yyyy-MM-dd HH:mm:ss”。
在Java類中使用@JsonProperty注解可以指定JSON數(shù)據(jù)的屬性名:
public class User { @JsonProperty("user_name") private String name; //... }
在Java類中使用@JsonRootName注解可以指定JSON數(shù)據(jù)的根節(jié)點(diǎn)名:
@JsonRootName(value = "user") public class User { //... }
以上就是在CXF中使用JSON注解的方法,可以通過對(duì)Java類的注解來更好的定義JSON數(shù)據(jù)。有了這種方法,我們可以更好地處理和操作JSON格式的數(shù)據(jù)。