का उपयोग कर JSON सरणी से स्ट्रिंग पुनर्प्राप्त करें मुझे कई उत्तरों मिल गए हैं जो मैं करने की कोशिश कर रहा हूं, लेकिन पर्याप्त नहीं है कि मैं इसे काम करने में सक्षम हूं। मेरे पास JSON का एक गुच्छा है जो इस उदाहरण की तरह दिखता है (केवल वास्तव में कई स्तरों को गहरा और स्तर पर सैकड़ों आइटमों के साथ मैं एक्सेस करना चाहता हूं): {"query":{"pages":{"links":[{"word":"bobsyeruncle","code":4},{"word":"easyaspie","code":3}]}}}
। मैं प्रारूप नहीं बदल सकता; यह किसी और का एपीआई है। इसमें बहुत कुछ है जिसकी मुझे आवश्यकता नहीं है; असल में मैं केवल ["बोब्सियरुनकल", "easyaspie"] की एक सरणी की तरह कुछ चाहता हूं। (या एक सूची या जो भी हो।)जैक्सन
मैंने जेएसओएन के एक सरल संस्करण के साथ प्रयोग किया जिसमें एक सरणी नहीं थी, और rootNode.get ("query") का उपयोग करके आसानी से एक स्ट्रिंग तक पहुंचने में सक्षम था। ("पेज") ... https://stackoverflow.com/questions/338586/a-better-java-json-library/338608#338608 में वर्णित तरीका। लेकिन मैं इस तरह से सरणी में नहीं पहुंच पाया है। मुझे यहां मिले अधिकांश उत्तरों का मानना है कि मैं "लिंक" जैसे पीओजेओ बनाना चाहता हूं जिसमें "शब्द" और "कोड" दोनों शामिल हैं, जो मैं नहीं करता हूं। स्ट्रिंग्स को एक्सेस करने के लिए, क्या "लिंक" की सूची की तरह कुछ बनाना आवश्यक है जिसमें "शब्द" और "कोड" दोनों शामिल हैं और फिर "कोड" को अनदेखा करें? यह सही प्रतीत नहीं होता है।
(इसके अलावा, अगर किसी को भी मुझे प्रलेखन को इंगित कर सकता/कहीं JacksonInFiveMinutes ट्यूटोरियल और पूरे जावाडोक के बीच में ट्यूटोरियल, मुझे यकीन है कि वह भी मदद मिलेगी हूँ।)
ईटीए इस काम किया, मुझे लगता है कि !:
String theJsonString = "{\"query\":{\"pages\":{\"links\":"
+ "[{\"word\":\"bobsyeruncle\"},{\"word\":\"easyaspie\"}]}}}";
ObjectMapper mapper = new ObjectMapper();
JsonNode rootNode = mapper.readTree(theJsonString);
JsonNode interestingObjectNode = rootNode.path("query").path("pages").path("links");
for (int i = 0; i < interestingObjectNode.size(); i ++) {
System.out.println(interestingObjectNode.get(i).path("word").asText());
}
मेरी पिछली टिप्पणी हटा दी गई - मैं अंत में वहां गया, अगर कोई इस प्रश्न को पाता है तो ऊपर कुछ कोड डालें। – umbraphile
सुरक्षित? उस जैक्सन उपयोग में "सुरक्षित" से आपका क्या मतलब है? @StaxMan – gumuruh
सुरक्षित अर्थ यह है कि यदि आप 'प्राप्त' का उपयोग करते हैं, और कोई मिलान नोड नहीं है, तो यह शून्य हो जाता है, और जांच की जानी चाहिए। लेकिन 'पथ' के साथ, एक वर्चुअल "लापता नोड" वापस कर दिया जाता है, इसलिए कोई शून्य जांच की आवश्यकता नहीं होती है। – StaxMan