2013-04-26 8 views
5

Ich versuche, eine Liste von Bildern in einer JSON-Datei, die ich auf meinem Webserver mit meiner Android-Anwendung habe. Aber sie werden nicht gelesen, ich muss einen Fehler gemacht haben, wahrscheinlich in meiner JSON-Datei.Erstellen Sie eine parsable JSON-Datei für Android-Anwendung

Ich versuche, eine .Json-Datei zu erstellen, die meine Anwendung lesen kann, eine meiner experimentellen JSON-Dateien ist unten aufgeführt, aber es funktioniert nicht.

Da ich mit Json nicht sehr erfahren bin, fragte ich mich, ob jemand anders wissen könnte, wie man eine JSON-Datei erstellt, die meine Anwendung parsen kann.

Meine experimentelle JSON-Datei:

{ 
"Wallpaper": [ 
    { 
     "id": "1", 
     "title": "Clouds", 
     "thumburl": "http://url.com/images/Pages/Apps/apps.png", 
     "previewurl": "http://url.com/images/Pages/Apps/apps.png", 
     "url": "http://url.com/images/Pages/Apps/apps.png", 
     "text": "Sky" 
    } 
] 
} 

Und mein Code:

import someimportsandotherstuff 

import de.dan_nrw.android.scroid.Wallpaper; 


public final class JsonWallpaperParser implements IWallpaperParser { 

/** 
* Creates a new instance of JsonWallpaperParser. 
*/ 
JsonWallpaperParser() { 
    super(); 
} 


/* (non-Javadoc) 
* @see de.dan_nrw.boobleftboobright.IWallpaperParser#parse(java.lang.String) 
*/ 
@Override 
public List<Wallpaper> parse(String data) throws ParseException { 
    try { 
     JSONArray array = new JSONArray(data); 
     List<Wallpaper> wallpapers = new ArrayList<Wallpaper>(); 

     for (int i = 0; i < array.length(); i++) { 
      JSONObject jsonWallpaper = array.getJSONObject(i); 

      wallpapers.add(new Wallpaper(jsonWallpaper.getString("id"), 
             jsonWallpaper.getString("title"), 
             URI.create(jsonWallpaper.getString("thumburl")), 
             URI.create(jsonWallpaper.getString("previewurl")), 
             URI.create(jsonWallpaper.getString("url")), 
             jsonWallpaper.getString("text"))); 
     } 

     return wallpapers; 
    } 
    catch (JSONException ex) { 
     throw new ParseException(ex.getMessage(), 0); 
    }   
} 
} 

Jede Hilfe ist willkommen!

+1

Das JSON Sie nicht aufgelistet nicht auswertet, fehlende Kommas –

+0

Danke mir geholfen, wäre es toll, wenn Ihr, wo ich sagen könnte, Ich vermisse sie oder wo ich irgendwelche Fehler gemacht habe – Mdlc

+0

@ Mark029348 Was willst du ... sind die folgenden Beiträge nicht deine Frage beantworten? Lassen Sie mich wissen, wenn Sie helfen können – Pragnani

Antwort

6

Dann sollten Sie Ihre Json wie diese JSONObject nicht JSONArray Rückkehr

[ 
    { 
     "id": "1", 
     "title": "Clouds", 
     "thumburl": "http://sherdle.com/images/Pages/Apps/Sherdleapps.png", 
     "previewurl": "http://sherdle.com/images/Pages/Apps/Sherdleapps.png", 
     "url": "http://sherdle.com/images/Pages/Apps/Sherdleapps.png", 
     "text": "Sky" 
    } 
] 

Ihre JSONString sein Sie sollten Ihre json Zeichenfolge wie diese

JSONObject object=new JSONObject(data); 
JSONArray array=object.getJSONArray("wallpaper"); 
List<Wallpaper> wallpapers = new ArrayList<Wallpaper>(); 
for (int i = 0; i < array.length(); i++) { 
    JSONObject jsonWallpaper = array.getJSONObject(i); 

    wallpapers.add(new Wallpaper(jsonWallpaper.getString("id"), 
           jsonWallpaper.getString("title"), 
           URI.create(jsonWallpaper.getString("thumburl")), 
           URI.create(jsonWallpaper.getString("previewurl")), 
           URI.create(jsonWallpaper.getString("url")), 
           jsonWallpaper.getString("text"))); 
} 
+0

Danke, das war die Antwort Ich war die Art von Antwort, die ich suchte, aber leider, genau wie Bobbake4's Antwort, es funktioniert nicht, und ich weiß nicht warum. Ich habe deinen Code ausprobiert, und ich habe meinen JSON wie in Josiah Hesters Antwort formatiert, aber nichts. – Mdlc

+0

@ Mark029348 stellen Sie sicher, dass Ihre 'Daten' nicht null ist und nicht im Sinne funktioniert..was ist passiert Lassen Sie mich jetzt – Pragnani

+0

Meine Daten nicht null? Könntest du das etwas weiter erklären, mein Codecode sollte korrekt sein, und es hat vorher funktioniert, aber ich habe die JSON-Datei verloren, also versuche ich eine neue zu erstellen (oder eine Quelle, die meine experimentelle natürlich lesen kann) – Mdlc

4

Ihr JSON hat Syntaxfehler. Eine Anzahl der Zeilen fehlen Kommata, z.

"previewurl": "http://sherdle.com/images/Pages/Apps/Sherdleapps.png" 
    "url": "http://sherdle.com/images/Pages/Apps/Sherdleapps.png" 
+0

Ok, danke, ich werde ändern und testen – Mdlc

+0

Ich habe es bearbeitet, aber es funktioniert nicht, wahrscheinlich einige andere Fehler gemacht – Mdlc

+0

Sie können http://jsonlint.org ausprobieren, um Ihren Json auf Korrektheit zu testen. Wie bekommen Sie diesen JSON? selbst bauen? Wenn ja, solltest du nicht. Es gibt viele Bibliotheken aller Arten von Sprachen, um native Übersetzungen für Sie zu machen. –

3

Format Ihre Json wie folgt aus:

{ 
    "wallpaper": [ 
     { 
      "id": "1", 
      "title": "Clouds", 
      "thumburl": "http://sherdle.com/images/Pages/Apps/Sherdleapps.png", 
      "previewurl": "http://sherdle.com/images/Pages/Apps/Sherdleapps.png", <--- You were missing a comma here 
      "url": "http://sherdle.com/images/Pages/Apps/Sherdleapps.png", <-- and here 
      "text": "Sky" 
     } 
    ] 
} 

In Zukunft können Sie JSON Lint Korrektheit überprüfen verwenden.

+0

Ich habe es getestet, es hat leider nicht funktioniert, ich glaube ich habe noch ein paar andere Fehler gemacht. Ich werde meine Frage bearbeiten – Mdlc

+0

Ich habe meine Frage neu formuliert, es wäre toll und hilfreich, wenn Sie noch einmal schauen und Ihr Wissen teilen könnten. – Mdlc

5

Ihr Problem analysieren wird Sie versuchen, um ein JSONArray zu erstellen, wenn Ihr Root-Element ein JSON-Objekt ist.

Diese Zeile ist falsch:

JSONArray array = new JSONArray(data); 

Sie dies ändern sollte:

JSONObject rootObject = new JSONObject(data); 
JSONArray array = rootObject.optJSONArray("wallpaper"); 
+0

Vielen Dank, das ist die Antwort, nach der ich suche. Ich habe es getestet, aber aus irgendeinem Grund funktioniert das nicht, und ich würde gerne sagen warum, aber ich habe überhaupt keine Ahnung. Ich habe das versucht, und ich formatierte mein JSON wie in Josiah Hesters Antwort, aber nichts. – Mdlc

+0

Wird Ihr catch-Block mit einer JSONE-Exception aufgerufen? Wenn ja, wie sieht der Stack-Trace aus? – Bobbake4

+0

Die Ausnahme wird Ihnen wahrscheinlich sagen, was das Problem ist, sobald Sie die Stapelüberwachung erhalten, aktualisieren Sie Ihre Frage damit. – Bobbake4

1

Vor JSON-String analysieren. Erstellen Sie Ihre JSON String wie diese

try { 

    JSONObject wallpaper=new JSONObject(); 
  wallpaper.put("id", "1"); 
  wallpaper.put("title", "Clouds"); 
  wallpaper.put("thumburl", "http://sherdle.com/images/Pages/Apps/Sherdleapps.png"); 
  wallpaper.put("previewurl", "http://sherdle.com/images/Pages/Apps/Sherdleapps.png"); 
  wallpaper.put("url", "http://sherdle.com/images/Pages/Apps/Sherdleapps.png"); 
  wallpaper.put("text", "Sky"); 
  JSONArray wallpaer_array=new JSONArray(); 
  wallpaer_array.put(wallpaper); 
  Log.d("json :",wallpaer_array.toString(0)); 

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

Logcat:

05-06 11:05:51.253: D/json :(434): [ 
05-06 11:05:51.253: D/json :(434): { 
05-06 11:05:51.253: D/json :(434): "id": "1", 
05-06 11:05:51.253: D/json :(434): "thumburl": "http:\/\/sherdle.com\/images\/Pages\/Apps\/Sherdleapps.png", 
05-06 11:05:51.253: D/json :(434): "text": "Sky", 
05-06 11:05:51.253: D/json :(434): "title": "Clouds", 
05-06 11:05:51.253: D/json :(434): "previewurl": "http:\/\/sherdle.com\/images\/Pages\/Apps\/Sherdleapps.png", 
05-06 11:05:51.253: D/json :(434): "url": "http:\/\/sherdle.com\/images\/Pages\/Apps\/Sherdleapps.png" 
05-06 11:05:51.253: D/json :(434): } 
05-06 11:05:51.253: D/json :(434): ] 
Verwandte Themen