Autore Topic: Error json parse  (Letto 693 volte)

Offline mikeblue

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: +3
    • @MikeBlue3003
    • Mostra profilo
    • home page
  • Sistema operativo:
    Ubuntu 11.04, Windows 7
Error json parse
« il: 24 Giugno 2012, 20:02:00 CEST »
0
Ciao a tutti.
è la prima volta che uso json per prendere i datida un sito web e forse sbaglio qualcosa io.
Io ho seguito le indicazioni che ho trovato a questo topic
ricevo sempre questo errore, ossia questo

Codice: [Seleziona]
type org.json.JSONArray cannot be converted to JSONObject
Posto il codice java
Codice (Java): [Seleziona]
readJson = readFeed("http://spritzteam.altervista.org/app_php/listnews.php");
                Log.i("stringa JSON", readJson);
               
                 try {
                         //JSONArray a = new JSONArray(readJson);
                         //Log.i("array", "si");
                         JSONObject json = new JSONObject(readJson.trim());
                         Log.i("Praeda","<jsonobject>\n"+json.toString()+"\n</jsonobject>");
                                       
                         JSONArray nameArray=json.names();
                         
                         JSONArray jsonArray = json.toJSONArray(nameArray);
                         Log.i("jsonArray", String.valueOf(jsonArray.length()));                         
                         
                 db = new HotOrNot(context);

Il metodo readFeed non fà nulla di sbagliato mi sembra, infatti la stringa la passa bene, comunque lo posto
Codice (Java): [Seleziona]
private String readFeed(String url) {
                StringBuilder builder = new StringBuilder();
              HttpClient client = new DefaultHttpClient();
              HttpGet httpGet = new HttpGet(url);
             
              try {
                 HttpResponse response = client.execute(httpGet);
                 StatusLine statusLine = response.getStatusLine();
                 int statusCode = statusLine.getStatusCode();
                 if (statusCode == 200) {
                   
                    HttpEntity entity = response.getEntity();
                    InputStream content = entity.getContent();
                    BufferedReader reader = new BufferedReader(new InputStreamReader(content));
                    String line;
                    while ((line = reader.readLine()) != null)
                    {
                       builder.append(line);
                    } //end while
                 } else {
                    Toast.makeText(context, "Failed to download file",Toast.LENGTH_LONG).show();
                 }
              } catch (ClientProtocolException e) {
                 e.printStackTrace();
              } catch (IOException e) {
                 e.printStackTrace();
              }
              return builder.toString();
        }

LogCat
Codice: [Seleziona]
06-24 17:56:58.414: V/PhoneStatusBar(144): setLightsOn(true)
06-24 17:56:59.184: I/ActivityManager(77): Displayed it.mikesupport.spritzteamphone/.News: +1s122ms
06-24 17:57:00.664: I/stringa JSON(996): [{"id":"53","title":"Play Off I\u00b0 fase Ritorno","introtext":"La prima fase dei play off si chiude senza troppe sorprese! Lo Spritz Team Amandola, che nonostante la sconfitta in gara uno, vince difronte al suo pubblico con un perentorio 56 a 38 contro i Fanciulli di Morrovalle.","image":"http:\/\/img403.imageshack.us\/img403\/1807\/dscn0030d.jpg","alias":"play-off-1-fase-ritorno","catid":"13","created":1339330172000,"created_by":"43"}]
06-24 17:57:00.695: W/System.err(996): org.json.JSONException: Value [{"created_by":"43","introtext":"La prima fase dei play off si chiude senza troppe sorprese! Lo Spritz Team Amandola, che nonostante la sconfitta in gara uno, vince difronte al suo pubblico con un perentorio 56 a 38 contro i Fanciulli di Morrovalle.","id":"53","title":"Play Off I° fase Ritorno","created":1339330172000,"alias":"play-off-1-fase-ritorno","image":"http:\/\/img403.imageshack.us\/img403\/1807\/dscn0030d.jpg","catid":"13"}] of type org.json.JSONArray cannot be converted to JSONObject
06-24 17:57:00.695: W/System.err(996):         at org.json.JSON.typeMismatch(JSON.java:111)
06-24 17:57:00.734: W/System.err(996):         at org.json.JSONObject.<init>(JSONObject.java:158)
06-24 17:57:00.745: W/System.err(996):         at org.json.JSONObject.<init>(JSONObject.java:171)
06-24 17:57:00.745: W/System.err(996):         at it.mikesupport.spritzteamphone.HttpGetTask.doInBackground(HttpGetTask.java:62)
06-24 17:57:00.745: W/System.err(996):         at it.mikesupport.spritzteamphone.HttpGetTask.doInBackground(HttpGetTask.java:1)
06-24 17:57:00.745: W/System.err(996):         at android.os.AsyncTask$2.call(AsyncTask.java:264)
06-24 17:57:00.754: W/System.err(996):         at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
06-24 17:57:00.754: W/System.err(996):         at java.util.concurrent.FutureTask.run(FutureTask.java:137)
06-24 17:57:00.754: W/System.err(996):         at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
06-24 17:57:00.754: W/System.err(996):         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
06-24 17:57:00.754: W/System.err(996):         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
06-24 17:57:00.764: W/System.err(996):         at java.lang.Thread.run(Thread.java:856)
06-24 17:57:01.044: D/dalvikvm(77): GC_EXPLICIT freed 196K, 12% free 11749K/13319K, paused 6ms+10ms

il link per verificare l'oggetto json è questo
Spero che qualcuno mi possa aiutare, perchè ricevo un errore subito alla prima riga di codice!
« Ultima modifica: 25 Giugno 2012, 12:31:53 CEST da mikeblue »
"Si ha la sensazione che ogni qualvolta si esca di casa, al proprio ritorno ci sia un nuovo prodotto Google appena lanciato. " (Philipp Lenssen)

Offline mikeblue

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: +3
    • @MikeBlue3003
    • Mostra profilo
    • home page
  • Sistema operativo:
    Ubuntu 11.04, Windows 7
Re:Error json parse
« Risposta #1 il: 25 Giugno 2012, 15:04:47 CEST »
0
sono andato su questo sito e la stringa json risulta valida...
perchè allora restituisco quest'errore?  :-(
« Ultima modifica: 25 Giugno 2012, 16:07:13 CEST da mikeblue »
"Si ha la sensazione che ogni qualvolta si esca di casa, al proprio ritorno ci sia un nuovo prodotto Google appena lanciato. " (Philipp Lenssen)

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +507
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Error json parse
« Risposta #2 il: 25 Giugno 2012, 16:53:10 CEST »
+1
Il json che ti ritorna la pagina http://spritzteam.altervista.org/app_php/listnews.php non è un object ma un array (lo puoi vedere già dal fatto che comincia con una quadra e non una graffa), è per questo che ottieni quell'eccezione.

Offline mikeblue

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: +3
    • @MikeBlue3003
    • Mostra profilo
    • home page
  • Sistema operativo:
    Ubuntu 11.04, Windows 7
Re:Error json parse
« Risposta #3 il: 25 Giugno 2012, 17:16:55 CEST »
0
si, infatti inizialmente avevo scritto
Codice (Java): [Seleziona]
JSONArray a = new JSONArray(readJson);solo che ricevevo un'eccezione...

comunque dopo 10 clean credo che sia risorto, infatti ora funziona... posto il codice esatto, grazie  :D
Codice (Java): [Seleziona]
JSONArray jsonArray = new JSONArray(readJson);
                         Log.i("array", "si");
                         //JSONObject json = new JSONObject(readJson.trim());                    
                 
                 if (sezione.equals("news")){
                         NewsItem currNews;
                         for (int i = 0; i < jsonArray.length(); i++){
                                 JSONObject jsonObject = jsonArray.getJSONObject(i);
"Si ha la sensazione che ogni qualvolta si esca di casa, al proprio ritorno ci sia un nuovo prodotto Google appena lanciato. " (Philipp Lenssen)