2012-08-09 23 views
5

Edytuj: Zmieniłem styl pliku json, aby było prostsze, ponieważ nie mogłem pracować ze starszą wersją. Muszę być w stanie utworzyć tablicę celów w java, gdzie każdy element w tablicy ma swoją nazwę jako wartość Target_Name. Muszę też móc łączyć powtarzające się nazwy docelowe, które mają różne nazwy obiektów. Tak więc zasadniczo chcę mieć docelową tablicę iw obrębie każdego elementu chcę mieć tablicę obiektów posiadających Typ, Numer Pin i możliwości.Potrzebujesz pomocy podczas analizy pliku json za pomocą gson

Wiem, że być może będę musiał utworzyć klasę listy celów i wewnątrz tych zmiennych dla nazwy celu i wszystkiego innego. Próbowałem już czegoś takiego, ale miałem problem z ustaleniem, jak to zadziała.

{ 
"Targets": [ 
    { 
     "Target_Name": "----", 
     "Object_Name": "----", 
     "Type": "----", 
     "Pin_Number": "----", 
     "Capabilities": "----" 
    }, 
    { 
     "Target_Name": "----", 
     "Object_Name": "----", 
     "Type": "----", 
     "Pin_Number": "----", 
     "Capabilities": "----" 
    }, 
    { 
     "Target_Name": "----", 
     "Object_Name": "----", 
     "Type": "----", 
     "Pin_Number": "----", 
     "Capabilities": "----" 
    }, 
    { 
     "Target_Name": "----", 
     "Object_Name": "----", 
     "Type": "----", 
     "Pin_Number": "----", 
     "Capabilities": "----" 
    } 
] 

}

+1

Co za ciepłe powitanie stackoverflow przyjacielu @CodeDroid. Może zachowaj to dla nie-pierwszego razu? –

Odpowiedz

2

to całkiem prosto do przodu, po jakiś kod, jak załadować i odczytać węzłów. Pomoże Ci dowiedzieć się, jak wysyłać zapytania do danych.

Reader reader = null; 
InputStream stream = context.getResources() 
    .openRawResource(R.raw.json_file); 
reader = new BufferedReader(new InputStreamReader(stream), 8092); 

// parse json 
JsonParser parser = new JsonParser(); 
JsonObject jsonObj = (JsonObject)parser.parse(reader); 

// Twój json parsowania będzie wyglądać po

JsonArray targets= jsonObj.getAsJsonArray("Targets"); 

List<Target> targetList = new ArrayList<Target>(); 
for (JsonElement target: targets) { 

    JsonObject targetObject = target.getAsJsonObject(); 
    String targetName= targetObject.get("Target_Name").getAsString(); 
    ....//get the rest 

    // create target object 
    targetList.add(new Target(targetName, ....)); 
} 

// Przykłady jak odczytać wartości i zapytań obiektów

for (Entry<String, JsonElement> entry : rootElem.entrySet()) 
{ 
    int key = Integer.parseInt(entry.getKey()); 
    JsonObject jsonObject = entry.getValue().getAsJsonObject(); 
} 


// get integer element 
int key = Integer.parseInt(entry.getKey()); 

// get child object 
JsonObject jsonObject = entry.getValue().getAsJsonObject(); 

// get string element   
String title = jsonObject.get("Object_Name").getAsString(); 
+0

plik nie jest surowcem. Mam połączenie HTTP z chmurą Google i mam adres URL do pliku json. Problem polega na analizie tego pliku i zapisaniu tych zmiennych do późniejszego wykorzystania. Spróbuję wdrożyć inne rzeczy, o których wspomniałeś. – zms6445

+0

@ user1586194 Nie ma znaczenia, co jest źródłem pliku json, po prostu przeczytaj go z dowolnego miejsca w Czytniku lub po prostu String i nadaj mu metodę JsonParser.parse(). – Maxim

+0

Czy JsonParser i JsonObject nie są częścią klasy json zawartej w sdk dla systemu Android? Czy gson ma odpowiednik? – zms6445

Powiązane problemy