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

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:

[{"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);

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

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:

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:

    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 :)

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