json_encode(php) to String array(Java) parser.

json_encode(php) to String array(Java) parser.
NV
  • Rejestracja:ponad 14 lat
  • Ostatnio:ponad 7 lat
  • Postów:31
0

Witam,

Piszę aplikację na urządzenie mobilne na zaliczenie na studia, mam pewien problem z danymi.
Chcę zrobić rozwijaną listę z kategoriami, które są zapisane w bazie danych MySQL, napisałem fragment kodu, który odpowiada za wyciągnięcie wszystkich rekordów z bazy danych (z tabeli kategorie) i wysyła je za pomocą echo json_encode(array_values($data)); do urządzenia mobilnego (poprzez Asynctask). Wygenerowany string przez PHP wygląda tak:

Kopiuj
[{"6":"PIZZA","7":"Makarony","9":"FAST FOOD","10":"Napoje","11":"SA\u0141ATKI"}]

Moje pytanie brzmi - jak ten String zamienić na tablice stringów, gdzie indeksami będą numery (w tym wypadku 6,7,9,10,11) a wartościami ciąg znaków po dwukropku.
Jeśli zrobiłem ```java
JSONArray jsonArray = new JSONArray(result);

Kopiuj
edytowany 1x, ostatnio: noVak
wojciechmaciejewski
  • Rejestracja:ponad 12 lat
  • Ostatnio:około 2 lata
  • Postów:560
0

Odpowiedź brzmi nie pisz, ktoś już to zrobił i na pewno lepiej niż Ty to zrobisz :) np to:
GSON -> https://github.com/google/gson

pozdrawiam
Wojtek

NV
Dziękuje za pomoc, ale nie mogę tego zrozumieć. Poczytałem trochę w internecie, próbowałem zastosować kilka rozwiązań - żadne nie zadziałało, za każdym razem wywalało apkę. Oglądnąłem poradnik na yt, ale tam tworzą jakieś klasy których ja nie moge zrozumieć. Potrzebuje tylko nazwy kategorii w tablicy zeby przekazać je jako argument do mojej listy rozwijanej.
jarekczek
  • Rejestracja:prawie 8 lat
  • Ostatnio:ponad 4 lata
  • Lokalizacja:Siemianowice Śląskie
  • Postów:500
0

W javie nie ma czegoś takiego jak tablica z dziurami. W javie tablica musi mieć wypełnione wszystkie elementy, a kluczami zawsze są inty. Dlatego tego typu obiekt w javie czytasz jako mapę. Załóżmy, że zostawiamy te nawiasy kwadratowe, które tworzą tu tablicę. Wtedy używając standardowych bibliotek javy ee (org.glassfish:javax.json:1.0.3), możesz napisać tak:

Kopiuj
import java.io.StringReader;
import javax.json.*;
    StringReader sr = new StringReader(inputString);
    StringReader sr = new StringReader(inputString);
    JsonReader reader = Json.createReader(sr);
    JsonArray a = reader.readArray();
    // W tablicy siedzi nie ciąg znaków, a kolejny obiekt Json,
    // z którego można dalej czytać, jak z mapy.
    final JsonObject obj = a.getJsonObject(0);
    System.out.println("obj: " + obj);
    for(String key: obj.keySet())
      System.out.println("Na " + key + " jest " + obj.getString(key));
    sr.close();

Otrzymujemy:

Kopiuj
    obj: {"6":"PIZZA","7":"Makarony","9":"FAST FOOD","10":"Napoje","11":"SAŁATKI"}
    Na 6 jest PIZZA
    Na 7 jest Makarony
    Na 9 jest FAST FOOD
    Na 10 jest Napoje
    Na 11 jest SAŁATKI

Czyli widać, że do wartości można się dostać. Przepisanie tego do tablicy jest tak proste, że już nie wypada podawać przykładu :)


Przeważnie ignoruję niezarejestrowanych użytkowników.
edytowany 1x, ostatnio: jarekczek

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.