kullanarak JSON dizisinden gelen dizeleri geri almayı denediğime yakın olan birkaç yanıt buldum, ancak çalışmayı başarabildim. Bu örneğe benzeyen bir grup JSON'um var (yalnızca gerçekten birkaç seviye daha derin ve yüzlerce öğe ile erişmek istediğim düzeyde): {"query":{"pages":{"links":[{"word":"bobsyeruncle","code":4},{"word":"easyaspie","code":3}]}}}
. Biçimi değiştiremiyorum; başka birinin API'sı. İhtiyacım olmayan pek çok şey var; Aslında sadece bir dizi ["bobsyeruncle", "easyaspie"] gibi bir şey istiyorum. (Veya bir liste veya her neyse.)Jackson
JSON'un bir dizisi olmayan daha basit bir sürümünü denedim ve rootNode.get ("query") kullanarak kolayca tek bir dizeye erişebildi. ("sayfalar") ... https://stackoverflow.com/questions/338586/a-better-java-json-library/338608#338608'da açıklanan yol. Ama diziyi bu şekilde alamadım. Burada bulduğum cevapların çoğunun, hem "kelime" hem de "kod" kelimelerini içeren "Bağlantılar" gibi bir POJO oluşturmak istediğimi varsayalım. İstediğim dizelere erişmek için, hem "word" hem de "code" kelimelerini içeren ve "code" u görmezden gelen "Linkler" listesi gibi bir şey yaratmak gerekli midir? Bu doğru görünmüyor.
(kimse belgelerine bana gelin Ayrıca,/yere JacksonInFiveMinutes öğretici ve bütün javadoc aradaki öğreticiler, bunu da yardımcı olacaktır eminim.) Bu çalıştı
ETA, ben !:
düşünüyorum 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());
}
Bir önceki yorumumu sildim - En sonunda orada buldum, bu soruyu herkesin bulması durumunda bir miktar kod koydum. – umbraphile
Güvenli? Bu jackson kullanımında "Güvenli" ile ne demek istiyorsun? @StaxMan – gumuruh
Eğer 'get' kullanırsanız ve eşleşen bir düğüm yoksa, null değerini döndürür ve kontrol edilmesi gerekir. Ancak 'yol' ile, sanal bir "kayıp düğüm" döndürülür, bu nedenle boş çeklere gerek yoktur. – StaxMan