मैं जैक्सन पुस्तकालय का उपयोग कर रहा JSON ऑब्जेक्ट बनाने के लिए, लेकिन जब मैं mapper.writeValue (System.out, responseData) समारोह का उपयोग करें, कार्यक्रम समाप्त हो जाता है।जावा प्रोग्राम समाप्त के बाद ObjectMapper.writeValue (System.out, responseData) - जैक्सन लाइब्रेरी
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
public class Test {
public static void main(String[] args){
new Test().test();
}
public void test() {
ObjectMapper mapper = new ObjectMapper();
Map<String, Object> responseData = new HashMap<String, Object>();
responseData.put("id", 1);
try {
mapper.writeValue(System.out, responseData);
System.out.println("done");
} 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();
}
}.
}
इस कार्यान्वित करने के बाद, कंसोल से पता चलता है { "id": 1}, लेकिन प्रदर्शित नहीं करता है "हो गया" यहाँ मेरी कोड है।
यह एक बग, यह सुविधा नहीं है - डिफ़ॉल्ट OutputStream द्वारा वास्तव में समाप्त होती है जब उच्च स्तरीय ObjectMapper.writeValue() तरीकों का उपयोग कर। लेकिन वास्तविक मुद्दे की अच्छी व्याख्या। यदि आप वांछित नहीं हैं, तो आप ऑब्जेक्टमैपर पर उस सुविधा को अक्षम कर सकते हैं ('JsonGenerator.Feature.AUTO_CLOSE_TARGET'):' mapper.disable (JsonGenerator.Feature.AUTO_CLOSE_TARGET) ' – StaxMan
ऐसा लगता है कि अक्षम विधि का एक और ओवरलोडेड संस्करण आसान होगा। वर्तमान में, ऐसा कोई नहीं है जो जेसन जेनरेटर लेता है। फीचर। –
ठीक है। हाँ, वहाँ तो 'mapper.configure (JsonGenerator.Feature.AUTO_CLOSE_TARGET, झूठी)' लेकिन दी गई सुविधा के तरीकों भी अगर वे याद कर रहे हैं जोड़ने चाहिए होना चाहिए। – StaxMan