私はユーザリストクラスとユーザリストと総レコードを返すAPIを持っています。 次のようにクラスがある:以下に示すように、私はFMSResponseInfoで型UserListResDTOのオブジェクトを設定していますjsonsonはネストされたオブジェクトのjsonを作成しません
@JsonInclude(JsonInclude.Include.NON_NULL)
public class FMSResponseInfo {
@JsonProperty("status")
private String status;
@JsonProperty("message")
private String message;
@JsonProperty("data")
private Object data;
@JsonProperty("status")
public String getStatus() {
return status;
}
@JsonProperty("status")
public void setStatus(String status) {
this.status = status;
}
@JsonProperty("message")
public String getMessage() {
return message;
}
@JsonProperty("message")
public void setMessage(String message) {
this.message = message;
}
@JsonProperty("data")
public Object getData() {
return data;
}
@JsonProperty("data")
public void setData(Object data) {
this.data = data;
}
}
@JsonInclude(JsonInclude.Include.NON_NULL)
public class UserListResDTO {
@JsonProperty("users")
private List<UserDTO> users;
@JsonProperty("totalRecords")
private long totalRecords;
public List<UserDTO> getUsers() {
return users;
}
public void setUsers(List<UserDTO> users) {
this.users = users;
}
public long getTotalRecords() {
return totalRecords;
}
public void setTotalRecords(long totalRecords) {
this.totalRecords = totalRecords;
}
}
。
私はこれまで、Webサービスを作成し、応答をjsonとして返してきました。しかし、私が直面している問題は、APIが応答を次のように返すことです。 {"data": "[email protected]"、 "message": "Success"、 "status": "200"}
そして、これは私がWebサービスを書かれている方法です。
@Path("/getUsers")
@GET
@Produces(MediaType.APPLICATION_JSON)
public FMSResponseInfo getUsers(@QueryParam("page") @DefaultValue("0") int page) {
System.out.println("In getUsers()");
FMSResponseInfo fmsResponseInfo = new FMSResponseInfo();
try {
UserListResDTO userList = fmsUserManager.getAllUsers(page);
fmsResponseInfo.setData(userList);
fmsResponseInfo.setStatus(FMSErrorMessageEnum.SUCCESS_CODE.getValue());
fmsResponseInfo.setMessage(FMSErrorMessageEnum.SUCCESS_MESSAGE.getValue());
} catch (Exception e) {
return FMSUtil.getErrorResponseInfo(FMSErrorMessageEnum.INTERNAL_SERVER_ERROR_CODE.getValue(),
e.getMessage());
}
System.out.println("Out getUsers()");
return fmsResponseInfo;
}
私は解決することができません依存関係か何かに問題があると思います。私のポンポンの主な依存関係は、次のとおりです。
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.7.2</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.7.2</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-moxy</artifactId>
</dependency>
と、私は次のようにApplicationクラスを拡張することで、Webサービスを作成しています:
@ApplicationPath("rest")
public class FMSApplication extends Application {
public Set<Class<?>> getClasses(){
Set<Class<?>> set = new HashSet<Class<?>>();
set.add(FMSUserManagerWebService.class);
set.add(FMSDocumentManagerWebService.class);
set.add(FMSInboxManagerWebService.class);
set.add(FMSLocationManagerWebService.class);
return set;
}
}
私はこのREST Webサービスに新しいですと任意の助けが本当に理解されるであろうと、かなり長い間立ち往生しています。私はこの問題を解決することができた次の依存関係を使用して、コメントでシャイア常駐によって示唆されるように
Webサービスのコードを追加しました。問題が何であるかを確認してください。 –
FMSResponseInfoのコードを含めてください。 – BPS
moxyをjacksonに変更して試してみませんか? org.glassfish.jersey.media ジャージーメディア-JSON-ジャクソン 2.22.2 –