2010-02-12 12 views
36
public static void parseProfilesJson(String the_json){ 
     try { 
      JSONObject myjson = new JSONObject(the_json); 

      JSONArray nameArray = myjson.names(); 
      JSONArray valArray = myjson.toJSONArray(nameArray); 
      for(int i=0;i<valArray.length();i++) 
      { 
       String p = nameArray.getString(i) + "," + ValArray.getString(i); 
       Log.i("p",p); 
      }  

     } catch (JSONException e) { 
       e.printStackTrace(); 
     } 
    } 

Jak widać, ten przykładowy kod będzie wydrukować KEY z JSONs, a następnie WARTOŚCI z JSONS.Jak przeanalizować JSON i przekształcić jego wartości w tablicę?

Byłoby wydrukować profili, John jeśli json było tak:

{'profiles':'john'} 

to jest cool. W porządku, ponieważ mogę pracować z tymi zmiennymi. Co jednak jeśli JSON był taki:

{'profiles': [{'name':'john', 'age': 44}, {'name':'Alex','age':11}]} 

W tym przypadku cała wartość byłaby tablicą. Zasadniczo chcę tylko pobrać tę tablicę (co jest w tym przypadku "wartością") ... i zamienić ją w rzeczywistą tablicę, z której może korzystać JAVA. Jak mogę to zrobić? Dzięki.

+1

Należy pamiętać, że to nie przejdzie dokładniejszego analizatora składni. JSON wymaga podwójnego cudzysłowu wokół nazw i ciągów znaków (pojedynczy cytat jest nieprawidłowy). –

+0

Nie martw się Jonathon ... JSONObject jest kodem JSON.org, przewidzianym do analizowania JSON w java. To, co umieścił alex, było tylko przykładem ... –

+0

Dałem ci punkt za dostarczenie prostego kodu dla mnie, aby przetworzyć mój ciąg jsonów. – crafter

Odpowiedz

56

dla przykładu:

{'profiles': [{'name':'john', 'age': 44}, {'name':'Alex','age':11}]} 

trzeba będzie coś zrobić tego efektu:

JSONObject myjson = new JSONObject(the_json); 
JSONArray the_json_array = myjson.getJSONArray("profiles"); 

ta zwraca obiekt Array.

Wtedy Iteracja się następująco:

int size = the_json_array.length(); 
    ArrayList<JSONObject> arrays = new ArrayList<JSONObject>(); 
    for (int i = 0; i < size; i++) { 
     JSONObject another_json_object = the_json_array.getJSONObject(i); 
      //Blah blah blah... 
      arrays.add(another_json_object); 
    } 

//Finally 
JSONObject[] jsons = new JSONObject[arrays.size()]; 
arrays.toArray(jsons); 

//The end... 

Trzeba będzie sprawdzić, czy dane jest tablicą (wystarczy zaznaczyć, że charAt(0) Rozpoczynające się [ znaku).

Mam nadzieję, że to pomoże.

0

Możesz wolą szybkiego json parser aby spełnić swoje wymagania ...

szybkiego parsera JSON jest bardzo proste, elastyczne, bardzo szybki i konfigurowalny.Spróbuj tego

[Quick-json parser] (https://code.google.com/p/quick-json/) - funkcje szybkiego json -

  • Zgodny ze specyfikacją JSON (RFC4627)

  • High-Performance JSON parser

  • Obsługa elastycznego/konfigurowalnego podejścia do analizowania

  • Konfigurowalny walidacja par klucz/wartość wszelkich JSON heirarchy

  • Łatwy w użyciu # bardzo mniej odcisk stopy

  • Podnosi developer przyjazny i łatwy do wyjątków

  • Pluggable klienta Validation wsparcia śladowych - klucz/wartość mogą być zatwierdzone przez skonfigurowanie niestandardowych weryfikatorów, jak i kiedy napotkał

  • zatwierdzania i Non-Members wsparcia parsera

  • Wsparcie dla dwóch typów konfiguracji (JSON/XML) za korzystanie z szybkiej json stwierdzenia prawidłowości parsera

  • Wymagaj JDK 1.5 # Nie zależność od zewnętrznych bibliotek

  • Wsparcie dla Json Generation dzięki serializacji obiektu

  • Obsługa wyboru typu kolekcji podczas analizy parsowania

Na przykład

JsonParserFactory factory=JsonParserFactory.getInstance(); 
JSONParser parser=factory.newJsonParser(); 
Map jsonMap=parser.parseJson(jsonString); 
Powiązane problemy