Tôi hiện đang sử dụng jackson 2.1.4 và tôi gặp một số khó khăn khi bỏ qua các trường khi tôi chuyển đổi một đối tượng thành chuỗi JSON.
Đây là lớp của tôi hoạt động như đối tượng được chuyển đổi:
public class JsonOperation {
public static class Request {
@JsonInclude(Include.NON_EMPTY)
String requestType;
Data data = new Data();
public static class Data {
@JsonInclude(Include.NON_EMPTY)
String username;
String email;
String password;
String birthday;
String coinsPackage;
String coins;
String transactionId;
boolean isLoggedIn;
}
}
public static class Response {
@JsonInclude(Include.NON_EMPTY)
String requestType = null;
Data data = new Data();
public static class Data {
@JsonInclude(Include.NON_EMPTY)
enum ErrorCode { ERROR_INVALID_LOGIN, ERROR_USERNAME_ALREADY_TAKEN, ERROR_EMAIL_ALREADY_TAKEN };
enum Status { ok, error };
Status status;
ErrorCode errorCode;
String expiry;
int coins;
String email;
String birthday;
String pictureUrl;
ArrayList <Performer> performer;
}
}
}
Và đây là cách tôi chuyển đổi nó:
ObjectMapper mapper = new ObjectMapper();
mapper.setVisibility(PropertyAccessor.FIELD, Visibility.ANY);
JsonOperation subscribe = new JsonOperation();
subscribe.request.requestType = "login";
subscribe.request.data.username = "Vincent";
subscribe.request.data.password = "test";
Writer strWriter = new StringWriter();
try {
mapper.writeValue(strWriter, subscribe.request);
} catch (JsonGenerationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JsonMappingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Log.d("JSON", strWriter.toString())
Đây là đầu ra:
{"data":{"birthday":null,"coins":null,"coinsPackage":null,"email":null,"username":"Vincent","password":"test","transactionId":null,"isLoggedIn":false},"requestType":"login"}
Làm thế nào tôi có thể tránh những giá trị null? Tôi chỉ muốn lấy thông tin cần thiết cho mục đích "đăng ký"!
Đây chính xác là đầu ra mà tôi đang tìm kiếm:
{"data":{"username":"Vincent","password":"test"},"requestType":"login"}
Tôi cũng đã thử @JsonInclude (Bao gồm.NON_NULL) và đặt tất cả các biến của tôi thành null, nhưng nó cũng không hoạt động! Cảm ơn sự giúp đỡ của các bạn!