Chciałbym wysyłać wiadomości w postaci obiektów JSON na serwer i parsować odpowiedź JSON z serwera.
Przykład obiektu JSON
{
"post": {
"username": "John Doe",
"message": "test message",
"image": "image url",
"time": "current time"
}
}
Próbuję przeanalizować JSON ręcznie, przechodząc atrybut po atrybucie. Czy jest jakaś biblioteka / narzędzie, których mogę użyć, aby ułatwić ten proces?
Odpowiedzi:
Dziwię się, że nie wspomniano o tym: ale zamiast używać prostego procesu, a raczej ręcznego procesu z małym pakietem json.org, GSon i Jackson są znacznie wygodniejsi w użyciu. Więc:
Możesz więc faktycznie powiązać się z własnymi POJO, a nie z niektórymi pół-węzłami drzew lub listami i mapami. (a przynajmniej Jackson pozwala też na wiązanie się z takimi rzeczami (być może również GSON, nie jestem pewien), JsonNode, Map, List, jeśli naprawdę chcesz to zamiast „prawdziwych” obiektów)
EDYCJA 19-MAR-2014:
Kolejnym nowym kandydatem jest biblioteka Jackson jr : używa ona tego samego szybkiego parsera / generatora przesyłania strumieniowego co Jackson (
jackson-core
), ale część związana z wiązaniem danych jest niewielka (50kB). Funkcjonalność jest bardziej ograniczona (brak adnotacji, tylko zwykłe Java Beans), ale wydajność powinna być szybka, a narzut inicjalizacji (pierwszego wywołania) również bardzo niski. Może to być dobry wybór, szczególnie w przypadku mniejszych aplikacji.źródło
Możesz użyć org.json.JSONObject i org.json.JSONTokener . nie potrzebujesz żadnych zewnętrznych bibliotek, ponieważ te klasy są dostarczane z Android SDK
źródło
GSON jest najłatwiejszy w użyciu i jest właściwą drogą, jeśli dane mają określoną strukturę.
Pobierz pliki gson .
Dodaj go do przywoływanych bibliotek.
Kod klasy Post
źródło
To jest klasa JsonParser
Uwaga: DefaultHttpClient nie jest już obsługiwany przez sdk 23, dlatego zaleca się używanie docelowego zestawu SDk 21 z tym kodem.
źródło
Tak naprawdę nie ma nic do JSON. Nawiasy klamrowe dotyczą „obiektów” (tablice asocjacyjne), a nawiasy kwadratowe tablice bez kluczy (indeksowane numerycznie). Jeśli chodzi o pracę z nim w systemie Android, istnieją gotowe klasy do tego zawarte w sdk (nie jest wymagane pobieranie).
Sprawdź te zajęcia: http://developer.android.com/reference/org/json/package-summary.html
źródło
Inne odpowiedzi zwróciły uwagę na Jackson i GSON - popularne dodatkowe biblioteki JSON dla Androida oraz json.org, pakiet JSON bare-bones, który jest zawarty w systemie Android.
Ale myślę, że warto również zauważyć, że Android ma teraz własne, w pełni funkcjonalne API JSON.
Zostało to dodane w Honeycomb: poziom API 11.
Obejmuje to
- android.util.JsonReader: docs i source
- android.util.JsonWriter: docs i source
Dodam również jedną dodatkową uwagę, która popycha mnie z powrotem w stronę Jacksona i GSON: Uważam, że przydatne jest używanie bibliotek innych firm, a nie pakietów Android. *, Ponieważ wtedy napisany kod może być współdzielony między klientem a serwerem. Jest to szczególnie istotne w przypadku czegoś takiego jak JSON, gdzie możesz chcieć serializować dane do JSON na jednym końcu, aby wysłać je na drugi koniec. W takich przypadkach, jeśli używasz Java na obu końcach, pomaga to uniknąć wprowadzania zależności android. *.
Albo chyba można pobrać odpowiedni kod źródłowy Androida. * I dodać go do projektu serwera, ale nie próbowałem tego ...
źródło
Możesz pobrać bibliotekę z http://json.org (Json-lib lub org.json) i użyć jej do przeanalizowania / wygenerowania JSON
źródło
wystarczy to zaimportować
używam dwóch obiektów, ponieważ możesz mieć obiekt jsonObject w innym
następnie umieściłem json post w innym w ten sposób
to jest metoda, której używam, aby złożyć wniosek
ustawienie połączenia
ustawienie strumienia wyjściowego
Używam tego, aby zobaczyć w logcat, co wysyłam
tutaj struna jest konstruowana
używam tego dziennika, aby zobaczyć, co się dzieje w odpowiedzi
wystąpienie json za pomocą ciągu zawierającego odpowiedź serwera
źródło
jeśli szukasz szybkiego parsowania json w Androidzie, sugeruję narzędzie, które jest dostępne bezpłatnie.
Narzędzie do tworzenia klas JSON
Jest darmowy i tworzy całą klasę analizy json w ciągu jednej-dwóch sekund ..: D
źródło
Chociaż użytkownicy już teraz udzielają doskonałych odpowiedzi, takich jak zachęcanie do korzystania z GSON itp., Chciałbym zasugerować użycie org.json . Zawiera większość funkcjonalności GSON. Pozwala również na przekazanie ciągu json jako argumentu do jego JSONObject i zajmie się resztą, np .:
JSONObject json = new JSONObject("some random json string");
Ta funkcjonalność czyni go moim ulubionym.
źródło
Istnieją różne biblioteki open source, których można używać do analizowania plików json.
org.json: - Jeśli chcesz czytać lub pisać json, możesz użyć tej biblioteki. Najpierw utwórz JsonObject: -
Teraz użyj tego obiektu, aby uzyskać wartości: -
Możesz zobaczyć pełny przykład tutaj
Jackson databind: - Jeśli chcesz powiązać i przeanalizować swój json z określoną klasą POJO, możesz użyć biblioteki jackson-databind, spowoduje to powiązanie twojego json z klasą POJO: -
Możesz zobaczyć pełny przykład tutaj
źródło