2012-08-09 6 views
5

Bearbeiten: Ich habe den Stil der JSON-Datei geändert, um es einfacher zu machen, da ich nicht mit der älteren Version arbeiten konnte. Ich muss in der Lage sein, ein Array von Zielen in Java zu erstellen, wobei jedes Element im Array seinen Namen als Wert von Target_Name hat. Ich muss auch in der Lage sein, Zielnamen, die unterschiedliche Objektnamen haben, zu wiederholen. Also im Grunde möchte ich ein Ziel-Array und innerhalb jedes Elements möchte ich ein Array von Objekten mit Typ, Pin_number und Fähigkeiten haben.Hilfe bei der Analyse von JSON-Datei mit Hilfe von Gson

Ich weiß, ich muss möglicherweise eine Zielliste Klasse und innerhalb dieser Variablen für den Zielnamen und alles andere erstellen. Ich habe so etwas schon einmal probiert, aber ich hatte Schwierigkeiten herauszufinden, wie es funktionieren würde.

{ 
"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

Was für ein herzliches Willkommen, mein Freund zu Stackoverflow @CodeDroid. Vielleicht speichern Sie das für Nicht-Neulinge? –

Antwort

2

Es ist ziemlich geradlinig, ist folgende einige Code, wie und Knoten lesen zu laden. Es wird Ihnen helfen, herauszufinden, wie Sie Ihre Daten abfragen können.

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

// Ihre json Parsing wie folgt

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, ....)); 
} 

// Beispiele für aussehen wird, wie die Werte zu lesen und Abfrageobjekte

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

Datei ist keine rawresource. Ich habe eine HTTP-Verbindung zu Google Cloud und eine URL zur JSON-Datei. Das Problem besteht darin, diese Datei zu analysieren und diese Variablen für die spätere Verwendung zu speichern. Ich werde versuchen, die anderen Dinge, die du erwähnt hast, umzusetzen. – zms6445

+0

@ user1586194 Es spielt keine Rolle, was die Quelle der JSON-Datei ist, lesen Sie es einfach von irgendwo zum Reader oder einfach String und geben Sie die JsonParser.parse() -Methode. – Maxim

+0

Sind JsonParser und JsonObject nicht Teil der JSON-Klasse, die in Android SDK enthalten ist? Hat gson ein Äquivalent? – zms6445