2013-04-26 6 views
5

Sto cercando di ottenere un elenco di immagini in un file json che ho sul mio server web con la mia applicazione Android. Ma non vengono letti, devo aver fatto qualche errore, probabilmente nel mio file JSON.Creare un file JSON analizzabile per l'applicazione Android

Sto provando a creare un file .Json che la mia applicazione può leggere, uno dei miei file JSON sperimentali è elencato di seguito, ma non funziona.

Dato che non ho molta esperienza con Json, mi chiedevo se qualcun altro potesse sapere come creare un file JSON che la mia applicazione può analizzare.

mio sperimentale di file JSON:

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

E il mio codice:

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

Ogni aiuto è apprezzato!

+1

Che JSON si elencato non valuta, virgole mancanti –

+0

Grazie per avermi aiutato, Sarebbe bello se il vostro potrebbe dire dove mi li manchi o dove ho fatto degli errori – Mdlc

+0

@ Mark029348 Cosa vuoi ... i seguenti messaggi non rispondono alla tua domanda? Fammi sapere se può aiutarti – Pragnani

risposta

6

Allora la vostra JSON dovrebbe essere come questo

[ 
    { 
     "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" 
    } 
] 

tuo JSONString ritorno JSONObject non JSONArray Si dovrebbe analizzare la stringa JSON come questo

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

Grazie, questa era la risposta, ero il tipo di risposta che stavo cercando, ma sfortunatamente, proprio come la risposta di bobbake4, non funziona, e non so perché. Ho provato il tuo codice e ho formattato il mio JSON come nella risposta di Josiah Hester, ma niente. – Mdlc

+0

@ Mark029348 assicurati che il tuo 'data' non sia nullo e non funzioni nel senso ... cosa è successo? Fammi ora – Pragnani

+0

I miei dati non sono nulli? Potresti spiegarlo un po 'oltre, il mio codice intero codice dovrebbe essere corretto, e ha funzionato prima, ma ho perso il file JSON, quindi sto provando a crearne uno nuovo (o una fonte che può leggere il mio corso sperimentale) – Mdlc

4

Il JSON presenta errori di sintassi. Un numero delle linee contiene virgole, ad es.

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

Ok, grazie, lo modifico e lo collaudo – Mdlc

+0

L'ho modificato, ma non funziona, probabilmente ho fatto altri errori – Mdlc

+0

puoi provare http://jsonlint.org per testare il tuo json per correttezza. Inoltre, come stai ottenendo questo json? costruendolo da solo? Se è così, non dovresti. Ci sono un sacco di librerie di tutti i tipi di lingue per fare traduzioni native> json-> native per te. –

3

formato JSON tua in questo modo:

{ 
    "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 futuro, è possibile utilizzare JSON Lint per verificare la correttezza.

+0

L'ho provato, purtroppo non ha funzionato, penso di aver fatto altri errori. Modificherò la mia domanda – Mdlc

+0

Ho riformulato la mia domanda, sarebbe bello e utile se potessi dare un'altra occhiata e condividere le tue conoscenze. – Mdlc

5

Il tuo problema è che si sta cercando per creare un JSONArray quando l'elemento principale è un oggetto JSONObject.

Questa linea non è corretta:

JSONArray array = new JSONArray(data); 

Si dovrebbe cambiare questo:

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

Grazie mille, questa è la risposta che sto cercando. L'ho provato, ma per qualche motivo non funziona, e vorrei dirti perché, ma non ne ho idea. Ho provato questo e ho formattato il mio JSON come nella risposta di Josiah Hester, ma niente. – Mdlc

+0

Il blocco catch viene chiamato con JSONException? In caso affermativo, a cosa assomiglia la traccia dello stack? – Bobbake4

+0

L'eccezione molto probabilmente ti dirà qual è il problema, una volta che ottieni la traccia di stack aggiorna la tua domanda con essa. – Bobbake4

1

Prima di analizzare qualsiasi stringa JSON. creare la stringa JSON come questo

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): ] 
Problemi correlati