Język zapytań dla JSON

11

Mam serwer, który zwraca bardzo duży komunikat JSON, a moja aplikacja kliencka jest zależna tylko od części tej odpowiedzi. Aplikacja kliencka musi sprawdzić, czy właściwość „xyz” istnieje w komunikacie JSON i, w zależności od wyniku, uruchomić określoną przypadek użycia.

Dla tego wymogu konwersja całej wiadomości JSON na obiekt brzmi dla mnie nieco drogo i stąd to pytanie.

Czy istnieje standardowy język zapytań JSON, taki jak język XML? Jeśli tak, jakie są najbardziej znane implementacje tego języka zapytań w Javie.

FYI: Zmiana lub dodanie nowej usługi po stronie serwera nie jest opcją.

Gospodarstwo rolne
źródło
W javascript, jeśli odpowiedź zostanie wysłana z poprawnym nagłówkiem (application / json), odpowiedź JSON będzie obiektem javascript. Czy o to prosisz? Nie jestem pewien na podstawie twojego pytania.
Florian Margaine
@Florian Zgadzam się, pozwól mi zaktualizować moje pytanie i nadać mu specyficzny charakter.
Farma
Więc myślę, że próbowałeś json.org/java ? :-)
Florian Margaine
Zastanawiam się nad tym samym. Każda biblioteka Java dla JSON, którą widziałem, wydaje się strasznie nieporęczna; czy nic nie jest JSON.getString(json_string, 'foo.22.bar')
zgodne
Lub, aby uniknąć parsowania za każdym razem JSON baz = new JSON(json_string); baz.getString('foo.22.bar');, na przykład
Izkata

Odpowiedzi:

6

Dlaczego nie skorzystać z javascript? (W końcu JSON to JavaScript Object Notation). Wówczas nie będziesz musiał analizować ani manipulować JSON.

EDYCJA Spójrz na http://json.org/java

Dla tego wymogu konwersja całej wiadomości JSON na obiekt brzmi dla mnie nieco drogo i stąd to pytanie.

To nie jest Deserializacja obiektu jest tania (przetestuj go sam). Rozmowa z zewnętrznym API będzie droższa o rząd wielkości. Możesz bezpośrednio manipulować łańcuchem, co może być nieco szybsze, ale ryzykujesz błędami, zmniejszasz rozszerzalność i zmniejszasz czytelność. Wysoki koszt.

Tom Squires
źródło
Zaktualizowałem moje pytanie i dostosowałem je do języka Java.
Farma
Używanie javascript nie jest opcją, ponieważ aplikacja kliencka działa na jednostce centralnej, która ma tylko obsługę LWUIT
Farm
2

„Mierz, nie zgaduj”. Tak, serializacja i deserializacja obiektów może być droga w teorii, ale jakie są cele wydajnościowe twojej aplikacji? Jeśli serializacja (de) serializacji nie podnosi wydajności do niedopuszczalnego poziomu, nie przejmuj się :-). Kluczem jest oczywiście wiedzieć, jakie powinny być granice wydajności (np. Czas odpowiedzi dla użytkownika w 2 sekundy) i zmierzyć każdą część cyklu żądania / odpowiedzi.

Martijn Verburg
źródło