मेरे पास JSON प्रतिक्रिया कुछ इस तरह है:
{
"id_list":["123", "456", "789"],
...
}
मैं सोच रहा था कि अगर मैं ऐसी आईडी सूची को पढ़ने के लिए ऑब्जेक्ट नोड का उपयोग करना चाहता हूं और उदाहरण के लिए आईडी की सूची वापस करना चाहता हूं तो मुझे क्या करना चाहिए।
मैंने इसे इस तरह करने की कोशिश की:
List<String> sendBookIds = asStream(objectMapper.readValue(on.get("bookIds"), new TypeReference<List<String>>(){}))
.map(JsonNode::asText)
.flatMap(bookIds -> idResolver.fetchBookIds(bookIds).stream())
.distinct()
.collect(Collectors.toList());
लेकिन मुझे यह त्रुटि हो रही है:
Cannot resolve method 'readValue(com.fasterxml.jackson.databind.JsonNode, anonymous com.fasterxml.jackson.core.type.TypeReference<java.util.List<java.lang.String>>
किसी को पता है कि क्या कोई जादू लापता आदेश है? अगर नहीं तो फिर उपाय क्या है?
2 जवाब
मुझे इसे करने का एक तरीका मिला। सबसे पहले मैंने स्ट्रिंग्स की सूची में JsonNode से आईडी एकत्र की:
List<String> sendBookIds = asStream(on.get("bookIds"))
.map(JsonNode::asText)
.collect(Collectors.toList());
और फिर फ़ंक्शन में पैरामीटर के रूप में बस सूची को जोड़ा:
Set<String> resolvedId = bookIdResolver.fetchBookIds(bookIds);
जादू की तरह काम करता है!
आप अपनी "id_list"
प्रॉपर्टी को JsonNode
नोड में और फिर कस्टम ObjectReader
पाठक इसे एक List<String>
सूची में क्रमबद्ध करते हैं:
JsonNode node = mapper.readTree(json).get("id_list");
ObjectReader reader = mapper.readerFor(new TypeReference<List<String>>(){});
//the list will be ["123", "456", "789"]
List<String> idList = reader.readValue(node);
संबंधित सवाल
जुड़े हुए प्रश्न
नए सवाल
java
जावा एक उच्च स्तरीय प्रोग्रामिंग भाषा है। इस टैग का उपयोग तब करें जब आपको भाषा का उपयोग करने या समझने में समस्या हो। इस टैग का उपयोग शायद ही कभी किया जाता है और इसका उपयोग अक्सर [वसंत], [वसंत-बूट], [जकार्ता-ई], [Android], [javafx], [हडूप], [श्रेणी] और [मावेन] के साथ किया जाता है।