2017-03-21 3 views
-3

meine Android App wirft eine JSONException, aber ich kann nicht herausfinden, warum! ich bin mit einer PHP-Seite für einige Spalten aus einer MYSQL-Datenbank auswählen und sie in ein Array wie folgt setzen:Android App bekommen JSONException

$sql = "SELECT name,type,price FROM $tbname"; 
$result = $conn->query($sql); 
$jsonarray=array(); 
if ($result->num_rows > 0) { 
    // output data of each row 
    while($row = $result->fetch_assoc()) { 
$jsonarray[]=$row; 
    } 
$myJSON = json_encode($jsonarray); 
echo $myJSON; 

die sich wie in einem JSON-Ergebnisse:

[{"name":"sandwich","type":"food","price":"5000"},{"name":"pizza","type":"food","price":"10000"}] 

Aber wenn ich versuche, Um den obigen JSON in Android Studio zu parsen, wird JSONException ausgelöst. mein Java-Code: ich habe eine Sendedaten-Methode in der Klasse genannt httpmanager wie folgt:

public static String SendData(DataPack pack) throws IOException { 
     URL url=new URL(pack.getUri()); 
     BufferedReader reader=null; 
     HttpURLConnection connection= (HttpURLConnection) url.openConnection(); 
     connection.setDoOutput(true); 
     OutputStreamWriter w=new OutputStreamWriter(connection.getOutputStream()); 
     w.write(pack.Encode()); 
     w.flush(); 
     StringBuilder sb=new StringBuilder(); 
     reader=new BufferedReader(new InputStreamReader(connection.getInputStream())); 
     String line; 
     while((line=reader.readLine())!=null){ 
      sb.append(line + "\n"); 
     } 
     return sb.toString(); 
    } 

ai dann mit einer OnPostExecute Methode wie folgt eine AsyncTask Klasse:

protected void onPostExecute(String s) { 
    String jsonStr = s; 
    if (jsonStr != null) { 
     try { 
      JSONObject jsonObj = new JSONObject(jsonStr); 
      Toast.makeText(context, "JSON recieved!", Toast.LENGTH_SHORT).show(); 
      } 
     } catch (JSONException e) { 
      e.printStackTrace(); 
      Toast.makeText(context, "Error parsing JSON data.", Toast.LENGTH_SHORT).show(); 
     } 
    } else { 
     Toast.makeText(context, "Couldn't get any JSON data.", Toast.LENGTH_SHORT).show(); 
    } 
} 

ich würde schätzen jede Hilfe in dieser Angelegenheit

+1

Beitrag, den Sie android Code ... von json Parsen – rafsanahmad007

+0

Ihre json gültig zu sein scheint. Veröffentlichen Sie Ihren Logcat- und Parsing-Code –

+0

Wie möchten Sie den JSON parsen? Können Sie Ihren Java-Code posten? – BlackHatSamurai

Antwort

0

Wie Sie JSON parse?

müssen Sie die try/catch Methode verwenden!

ich so etwas wie dieses:

HttpURLConnection connection = null; 
     BufferedReader reader = null; 

     try { 

      URL url = new URL(params[0]); 
       connection = (HttpURLConnection) url.openConnection(); 
       connection.connect(); 
      InputStream stream = connection.getInputStream(); 
      reader = new BufferedReader(new InputStreamReader(stream)); 

      StringBuffer buffer = new StringBuffer(); 
       String line = ""; 
        while ((line = reader.readLine()) != null) { 
         buffer.append(line); 
        } 

      String finalJson = buffer.toString(); 

      //Code for getting objects/arrays 


    }catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } finally { 
      if (connection != null) { 
       connection.disconnect(); 
      } 
      try { 
       if (reader != null) { 
        reader.close(); 
       } 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 

     } 
+0

Ich habe einen Versuch/Catch-Block, aber was ich nicht verstehe ist, warum ist es die Ausnahme überhaupt werfen !? Die JSON-Formatierung scheint korrekt zu sein und ich denke, ich analysiere es einfach nur, aber die Ausnahme wird immer wieder geworfen – user3770803

Verwandte Themen