मैं वर्तमान में जैक्सन 2.1.4 का उपयोग कर रहा हूं और जब मैं किसी JSON स्ट्रिंग में ऑब्जेक्ट को परिवर्तित कर रहा हूं, तो मुझे फ़ील्ड्स को अनदेखा करने में कुछ परेशानी हो रही है।
यहाँ मेरा वर्ग है जो परिवर्तित होने वाली वस्तु के रूप में कार्य करता है:
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;
}
}
}
और यहां बताया गया है कि मैं इसे कैसे परिवर्तित करता हूं:
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())
यहाँ उत्पादन है:
{"data":{"birthday":null,"coins":null,"coinsPackage":null,"email":null,"username":"Vincent","password":"test","transactionId":null,"isLoggedIn":false},"requestType":"login"}
मैं उन अशक्त मूल्यों से कैसे बच सकता हूं? मैं केवल "सदस्यता" उद्देश्य के लिए आवश्यक जानकारी लेना चाहता हूं!
यहाँ बिल्कुल वही आउटपुट है जिसकी मुझे तलाश है:
{"data":{"username":"Vincent","password":"test"},"requestType":"login"}
मैंने @JsonInclude (शामिल करें। NON_NULL) की भी कोशिश की और अपने सभी चरों को शून्य करने के लिए रखा, लेकिन यह भी काम नहीं किया! दोस्तों, आपके सहयोग के लिए धन्यवाद!