मैं सिर्फ जैक्सन JSON लाइब्रेरी का उपयोग शुरू कर रहा हूँ। जैक्सन एक बहुत ही शक्तिशाली पुस्तकालय है, लेकिन इसमें बहुत व्यापक एपीआई है। कई तरीकों से कई चीजें किए जा सकते हैं। इससे जैक्सन में अपना रास्ता खोजना मुश्किल हो जाता है - यह जानना कि चीजों को करने का सही/सर्वोत्तम तरीका क्या है? इस तरह एक समाधान से अधिकपढ़ा गया और जैक्सन में रीड ट्री: किस का उपयोग कब किया जाए?
String json = "{\"a\":2, \"b\":\"a string\", \"c\": [6.7, 6, 5.6, 8.0]}";
ObjectMapper mapper = new ObjectMapper();
JsonNode node = mapper.readValue(json, JsonNode.class);
if (node.isObject()) {
ObjectNode obj = mapper.convertValue(node, ObjectNode.class);
if (obj.has("a")) {
System.out.println("a=" + obj.get("a").asDouble());
}
}
:
क्यों मैं इस समाधान का प्रयोग करेंगे
String json = "{\"a\":2, \"b\":\"a string\", \"c\": [6.7, 6, 5.6, 8.0]}";
ObjectMapper mapper = new ObjectMapper();
JsonNode node = mapper.readTree(json);
if (node.isObject()) {
ObjectNode obj = (ObjectNode) node;
if (obj.has("a")) {
System.out.println("a=" + obj.get("a").asDouble());
}
}
या समाधान से अधिक है कि मैं JsonFactory और JsonParser और हो सकता है और भी विकल्प का उपयोग कर भर आया ...
ऐसा लगता है कि mapper.readValue सबसे सामान्य है और कई मामलों में इसका उपयोग किया जा सकता है: जेसननोड, ऑब्जेक्ट नोड, ऐरेनोड, पोजो इत्यादि को पढ़ें। तो मैं क्यों चाहूंगा ई mapper.readTree?
और सबसे अच्छा तरीका है एक ObjectNode करने के लिए एक JsonNode कन्वर्ट करने के लिए क्या है? बस ऑब्जेक्ट नोड में डाला? या mapper.convertValue जैसे कुछ का उपयोग करें?
धन्यवाद, यह उपयोगी जानकारी है। मुझे लगता है कि कनवर्ट करना संभव था जब सही हो तो सही प्रकार पर डाला जा सके और यह खुद को कास्टिंग करने से सुरक्षित होगा ... –
यह एक दिलचस्प विचार है - शायद इस तरह के कोड को जोड़ा जा सकता है? नाम 'कन्वर्ट' रूपांतरण को व्यक्त करने के लिए है; बस नहीं डाला, लेकिन मुझे लगता है कि यह अनुचित उम्मीद नहीं है। मैं इसके लिए एक सुधार मुद्दा दर्ज करूंगा। – StaxMan