Frage

Ich möchte wissen, wie ein JSON-Feed, indem Sie Elemente zu analysieren (z. B. URL / Titel / Beschreibung für jedes Element). Ich habe einen Blick auf den doc / api hatte, aber es hat mir nicht geholfen.

Das ist, was ich habe, so weit

import com.google.gson.Gson;
import com.google.gson.JsonObject;

public class ImportSources extends Job {
    public void doJob() throws IOException {
        String json = stringOfUrl("http://feed.test/all.json");
        JsonObject jobj = new Gson().fromJson(json, JsonObject.class);
        Logger.info(jobj.get("responseData").toString());
    }
    public static String stringOfUrl(String addr) throws IOException {
        ByteArrayOutputStream output = new ByteArrayOutputStream();
        URL url = new URL(addr);
        IOUtils.copy(url.openStream(), output);
        return output.toString();
    }
}   
War es hilfreich?

Lösung

Abhängig von dem tatsächlichen JSON-Format. Sie können in der Tat schaffen nur eine benutzerdefinierte Javabean Klasse, die das JSON-Format übereinstimmt. Alle Felder in JSON als String abgebildet werden, Integer, Boolean, etc Javabean Eigenschaften. Jegliche Arrays können als List Eigenschaften zugeordnet werden. Alle Objekte können als eine weitere verschachtelte Javabean Eigenschaft zugeordnet werden. Es erleichtert erheblich die Weiterverarbeitung in Java.

Ohne ein JSON-String Beispiel von Ihrer Seite, es ist zu raten nur, wie es aussehen würde, so dass ich nicht ein einfaches Beispiel hier geben kann. Aber ich ähnliche Antworten, bevor hier gepostet haben, können Sie es nützlich finden:

Gson hat auch eine Benutzerhandbuch , können Sie es finden nützlich als auch.

Andere Tipps

Gson 1.4 verfügt über einen neuen API JsonStreamParser, mit dem Sie mehr JSON-Objekten einzeln aus einem Strom analysieren.

können Sie erstellen Java-Klassen für die JSON-Objekte entsprechen. Die ganze Zahl, string Werte können als abgebildet werden. Json kann wie this- analysiert werden

 Gson gson = new GsonBuilder().create();
 Response r = gson.fromJson(jsonString, Response.class);

Hier ist ein Beispiel- http : //rowsandcolumns.blogspot.com/2013/02/url-encode-http-get-solr-request-and.html

Ich weiß nicht, ob Gson tun kann Streaming / inkrementelle Bindung (ich dachte, es nicht).

Aber gibt es besonderen Grund nur, dass bestimmte Bibliothek in Betracht ziehen? Andere Java JSON Verarbeitungsbibliotheken erlauben eine solche Verarbeitung (Sie Links die andere Antwort hat für einige Ideen überprüfen kann), da es sehr wichtiges Merkmal ist, wenn große Feeds verarbeiten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top