Przeszukiwanie json (gson)

0

Hmm, kojarzycie może czy gson posiada możliwość przeszukiwania wartości ale w całym drzewie? Ewentualnie json.org ale wolałbym gson bo już go mam użytego w projekcie

Generalnie zrobiłem to mapperem:

JsonNode root = objectMapper.readTree(body);
Optional.ofNullable(root)
            .map(jsonNode -> jsonNode.findValue(key))
            .map(JsonNode::asText;

Nie znalazłem czy json/gson obsługuje coś podobnego

2

Ale co konkretnie chcesz zrobić? Sprawdzić czy wartość istnieje, policzyć wartości, znaleźć "ścieżkę"? Noii też co jest tą wartością? Scalar, jak string/int/bool, czy cały array lub obiekt?

0

Chciałem wyciągnąć wartość z klucza ale wziąć pod uwage wszystkie klucze w jsonie, a nie tylko najwyższe rooty

0
marcin.x napisał(a):

Chciałem wyciągnąć wartość z klucza ale wziąć pod uwage wszystkie klucze w jsonie, a nie tylko najwyższe rooty

Nooo, dokładniej mówiąc to "root"em jest cały obiekt, a nie pojedyncze klucze w nim.

Czyli jak rozumiem chcesz przeszukać wszystkie dowolne zagnieżdżone obiekty, i znaleźć wszystkie wartości pod danym kluczem, tak?

0

Dokładnie, chciałem przeszukać wszystkie zagnieżdzone obiekty

0

A nie możesz sobie tego obiektu jakimś gson.setPretty(true) stringa wyprodukować i na nim jakimś regexpem interesujące linie powyciągać i sparsować splitem?

0
MrMadMatt napisał(a):

A nie możesz sobie tego obiektu jakimś gson.setPretty(true) stringa wyprodukować i na nim jakimś regexpem interesujące linie powyciągać i sparsować splitem?

Nie da rady, bo tymi wartościami pewnie nie są same litery i cyfry, tylko może mieć też JSON'a np takiego

{"key":"welcome{\"key\":\"value\"}"}

nie mówiąc już o encodowanym UTF-8, więc powodzenia żeby w czymś takim znaleźć tylko wartości pod kluczem.

0

@TomRiddle:
Dokładnie, dostaje różne jsony(mogłem wspomnieć o tym w pierwszym poście) i tylko po nazwie klucza moge to wyciągnąć.

Spoko, objectmapper mi zrobił robote, ale myślałem że gson/json.org ma coś podobnego, bo to w końcu dedykowana biblioteka do tego

0

A co mówi dokumentacja?

1

Potrzebujesz dodatkowej biblioteki, żeby przejść drzewo obiektów w poszukiwaniu klucza? Przecież to zadanie z liceum.

Pomysły, żeby jsona drukować do stringa i szukać regexpem przemilczę… ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1