मैं निम्नलिखित वर्गों मिल गया है की विशेषताओं लपेट नहीं है:जैक्सन JSON नेस्टेड वस्तु
public class Container {
private String name;
private Data data;
}
public class Data {
private Long id;
}
जब मैं जैक्सन का उपयोग कर Container
वर्ग को क्रमानुसार मैं
{"name":"Some name","data":{"id":1}}
मिल लेकिन मैं परिणाम की जरूरत होने के लिए:
{"name":"Some name","id":1}
यह (Container.getDataId()
विधि जोड़ने के बिना) संभव है? यदि हां, तो यह कैसे करें?
अद्यतन
मैं कस्टम JsonSerializer<Data>
बनाने की कोशिश की है, लेकिन जैसा कि पहले
public class JsonDataSerializer extends JsonSerializer<Data> {
private static Logger logger = Logger.getLogger(JsonDataSerializer.class);
@Override
public void serialize(Data value, JsonGenerator jgen,
SerializerProvider provider)
throws IOException,JsonProcessingException {
Long id = (value.getId() == null) ? 0l : value.getId();
jgen.writeStartObject();
jgen.writeNumberField("id", id);
jgen.writeEndObject();
logger.debug("Data id " + id + " serialized to JSON.");
}
}
मैं भी Data
श्रेणी से ऊपर @JsonSerialize
टिप्पणी जोड़ने के लिए कोशिश की है परिणाम एक ही था, तो Container
कक्षा में गेटटर के ऊपर। जैसा कि मैंने बिना किसी सफलता के पहले उल्लेख किया था। मेरा serializer का उपयोग किया जाता है, लॉगजर लॉग संदेश।
अद्यतन 2
जब मैं writeStartObject()
और writeEndObject()
को दूर तो कोई JSON, returnesd है केवल HTTP Status 500
त्रुटि और कोई अपवाद नहीं है कि मैं क्या डिबग आउटपुट में पाए जाने वाले को छोड़कर फेंक दिया है।
DEBUG: org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerExceptionResolver - Resolving exception from handler [[email protected]]: org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: Can not write a field name, expecting a value; nested exception is org.codehaus.jackson.JsonGenerationException: Can not write a field name, expecting a value
DEBUG: org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver - Resolving exception from handler [[email protected]]: org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: Can not write a field name, expecting a value; nested exception is org.codehaus.jackson.JsonGenerationException: Can not write a field name, expecting a value
DEBUG: org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver - Resolving exception from handler [[email protected]]: org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: Can not write a field name, expecting a value; nested exception is org.codehaus.jackson.JsonGenerationException: Can not write a field name, expecting a value
क्या हुआ अगर आप writeStartObject() और writeEndObject() लाइनों को छोड़ क्या होता है? –
आप शायद सिर्फ मूल्य लिखना चाहिए: writeNumber (आईडी) –
हाँ, का उपयोग करते हुए सिर्फ 'writeNumber (आईडी) writting' कम से कम कुछ मामले के लिए काम किया। आउटपुट '" डेटा था ": 1'। लेकिन क्या होगा यदि मैं 'डेटा' कक्षा में एक और विशेषता को क्रमबद्ध करना चाहता हूं? मैं 'के साथ और' लिखने {प्रारंभ, समाप्ति} Object' बिना उत्तर के लिए कोई भाग्य के साथ – kurochenko