Chcę mieć dostęp do właściwości z ciągu JSON w ramach mojej metody działania Java. Ciąg jest dostępny po prostu mówiąc myJsonString = object.getJson()
. Poniżej znajduje się przykład tego, jak może wyglądać ciąg:
{
'title': 'ComputingandInformationsystems',
'id': 1,
'children': 'true',
'groups': [{
'title': 'LeveloneCIS',
'id': 2,
'children': 'true',
'groups': [{
'title': 'IntroToComputingandInternet',
'id': 3,
'children': 'false',
'groups': []
}]
}]
}
W tym ciągu każdy obiekt JSON zawiera tablicę innych obiektów JSON. Celem jest wyodrębnienie listy identyfikatorów, w których dowolny obiekt posiadający właściwość grupy, która zawiera inne obiekty JSON. Patrzyłem na Google'a Gson jako potencjalną wtyczkę JSON. Czy ktoś może zaoferować jakieś wskazówki, jak wygenerować Javę na podstawie tego ciągu JSON?
Odpowiedzi:
Google Gson obsługuje generyczne i zagnieżdżone ziarna.
[]
W JSON reprezentuje tablicę i należy do zbioru map, takich jak JavaList
czy tylko zwykły tablica Java.{}
W JSON reprezentuje obiekt i należy mapować do JavyMap
, czy tylko niektóre klasy JavaBeans.Masz obiekt JSON z kilkoma właściwościami, których
groups
właściwość reprezentuje tablicę zagnieżdżonych obiektów tego samego typu. Można to przeanalizować za pomocą Gson w następujący sposób:Dość proste, prawda? Wystarczy mieć odpowiedni JavaBean i zadzwonić
Gson#fromJson()
.Zobacz też:
źródło
Bewaaaaare z Gson! To bardzo fajne, bardzo świetne, ale gdy tylko chcesz zrobić coś innego niż proste przedmioty, możesz łatwo zacząć budować własne serializatory (co nie jest takie trudne).
Ponadto, jeśli masz tablicę obiektów i deserializujesz trochę jsonów w tej tablicy obiektów, prawdziwe typy są PRZEGUBIONE! Pełne obiekty nawet nie zostaną skopiowane! Użyj XStream .. Które, jeśli użyjesz jsondriver i ustawisz odpowiednie ustawienia, koduje brzydkie typy w rzeczywistym jsonie, abyś nic nie stracił. Niewielka cena do zapłacenia (brzydki Json) za prawdziwą serializację.
Pamiętaj, że Jackson rozwiązuje te problemy i jest szybszy niż GSON.
źródło
Co dziwne, jedynym do tej pory przyzwoitym procesorem JSON był GSON.
Oto więcej dobrych wyborów:
EDYCJA (sierpień 2013):
Jeszcze jedna rzecz do rozważenia:
źródło
Lub z Jacksonem:
źródło
Jeśli w wyniku jakiejkolwiek zmiany jesteś w aplikacji, która już korzysta z http://restfb.com/ , możesz:
itp.
źródło
Proste i działa kod Java do konwersji
JSONObject
doJava Object
Employee.java
LoadFromJSON.java
źródło
źródło
Jeśli użyjesz dowolnego rodzaju specjalnych map z kluczami lub wartościami również specjalnych map, przekonasz się, że wdrożenie google nie będzie brane pod uwagę.
źródło
Co jest nie tak ze standardowymi rzeczami?
źródło
Wypróbuj boon:
https://github.com/RichardHightower/boon
Szybko jest zły:
https://github.com/RichardHightower/json-parsers-benchmark
Nie wierz mi na słowo ... sprawdź test gatling.
https://github.com/gatling/json-parsers-benchmark
(W niektórych przypadkach maksymalnie 4x, a poza setnymi testami. Ma również tryb nakładki indeksu, który jest jeszcze szybszy. Jest młody, ale ma już niektórych użytkowników.)
Może parsować JSON do map i list szybciej niż jakakolwiek inna biblioteka może parsować do JSON DOM i to bez trybu nakładki indeksu. W trybie nakładki indeksu Boon jest jeszcze szybszy.
Ma również bardzo szybki tryb LS JSON i tryb analizatora składni PLIST. :) (i ma bardzo małą pamięć, bezpośrednio z trybu bajtów z kodowaniem UTF-8 w locie).
Ma także najszybszy tryb JSON do JavaBean.
Jest nowy, ale jeśli szukasz szybkiego i prostego interfejsu API, nie sądzę, aby istniał szybszy lub bardziej minimalistyczny interfejs API.
źródło
W zależności od wejściowego formatu JSON (ciąg / plik) utwórz ciąg jSONS. Przykładowy obiekt klasy Message odpowiadający JSON można uzyskać w następujący sposób:
Komunikat msgFromJSON = new ObjectMapper (). ReadValue (jSONString, Message.class);
źródło
Najprostszym sposobem jest użycie tej metody softconvertvalue, która jest niestandardową metodą, w której można przekonwertować jsonData na określoną klasę Dto.
źródło