2016-07-29 9 views
2

Ich habe JSON, das in ein Java-Objekt konvertiert werden muss. Die JSONs Ich muss kann wie folgt aussehen handhaben:Erstellen eines Java-Objekts mit reservierten Schlüsselwörtern als Variablenname

{ 
    "documents": [ 
     { 
     "title": "Jobs", 
     "is-saved": false, 
     "abstract": "<span class=\"hit\">Jobs</span> may refer to:\n\n* Steve <span class=\"hit\">Jobs</span> (1955–2011), co-founder and former CEO of consumer electronics company...<br />", 
     "id": "Jobs", 
     "url": "http://en.wikipedia.org/wiki/Jobs" 
     } 
    ], 

    "keywords_local": [ 
     { 
     "keyword": "Jobs", 
     "interest": 1, 
     "angle": 0 
     } 
    ], 
    "sessionid": "6cd6402e-1f67-45a8-b0fa-e79a5d0d50f4", 
    "q": "Jobs", 
} 

Diese JSON zurückgegeben wird, wenn Sie einen Suchbegriff auf einer Suchmaschine, in diesem Fall „Jobs“ eingeben. Ich habe diese zu erstellenden Variablen nicht benannt, diese JSON wurde mir nur von einer ähnlichen früheren App "gegeben". Also habe ich offensichtlich Probleme mit Variablen, die gespeichert und abstrakt sind. Abstract ist ein reserviertes Schlüsselwort und überall, wo ich ein reserviertes Schlüsselwort lese, kann es NICHT als Variablenname verwendet werden.

Ich habe keinen Zugriff auf die vorherige App, die ich Art der Aktualisierung bin und ich denke, der Punkt ist, dass ich es selbst herausfinden muss;) Aber ich bin ein bisschen still stehen jetzt haben keine Ahnung, wie man vorwärts kommt.

Ich bin ein Neuling, also gib mir nicht die Hölle, wenn ich eine dumme Frage stelle, es ist mein erstes Mal, irgendeine Art von App zu codieren! ;) Danke für jede Hilfe!

+0

Wie versuchen Sie, das Objekt der Daten zu serialisieren? – ifly6

Antwort

8

Wenn Sie GSON zum Analysieren verwenden, können Sie Ihre Mitglieder benennen und mit Anmerkungen für das Mapping versehen.

@SerializedName("abstract") 
private String abstractText; 
6

Eine weitere Option, die Sie haben, ist Jackson zu verwenden, und verwenden Sie die @JsonProperty Anmerkung ..

@JsonProperty("abstract") 
private String abstractText; 
+0

Danke! Ich hatte keine Ahnung, dass ich das verwenden könnte, das wird gut für mich funktionieren! – Alex

+1

So sehr mir die Genehmigung gefällt, könntest du bitte die erste Antwort von Christoph annehmen? Er legte das Konzept dar. Ich habe den Vorschlag nur ergänzt. – christopher

+1

Danke @ Christopher. Du solltest nicht haben! –

1

In der Tat kommt es auf das Werkzeug, das Sie verwenden. Wenn Tools direkt auf Ihren benutzerdefinierten POJO verweisen (wie GSON, Jackson), müssen Sie den JSON-Feldnamen mit Ihrem korrekten und gültigen Java-Feldnamen verknüpfen.

Wenn Sie eine mors-Basisbibliothek wie JSON.org verwenden, müssen Sie dies nicht tun, da Sie sie für ein bestimmtes Objekt analysieren, damit Sie damit umgehen können.

JSONObject obj = new JSONObject(" .... "); 

JSONArray arr = obj.getJSONArray("documents"); 
String abstractValue = arr.getJSONObject(0).getString("abstract");