Cannot convert into JSON Array

  • 2 Antworten
  • Letztes Antwortdatum
D

Didi95

Neues Mitglied
0
Hi,
ich entwickle gerade eine App für die Schule, wo er mir Vertretungsdaten aus einer SQL datenbank ausliest. Meine Verbindung zur Datenbank funktioniert anscheinend schon und er holt sich die Daten auch soweit ich dem Logtag trauen kann, allerdings habe ich Probleme bei der weiteren Verarbeitung der Daten. Er soll sie mir in eine Listview einfügen, allerdings kommt immer wieder dieser Fehler:

Error parsing data org.json.JSONException: Value n<!doctype of type java.lang.String cannot be converted to JSONArray

Ich habe jetzt schon ein bisschen gegoogelt und hab was gefunden das wenn da doctype steht der header der phpdatei gesetzt werden muss. hab das soweit jetzt auch alles gemacht allerdings erscheint der fehler immer wieder.
das er den string nicht in ein json array konvertieren kann, da bin ich völlig ratlos. könnt ihr mir da weiterhelfen? Stelle hier den code mit rein:

PHP:
<?php
header('Content-type=application/json; charset=utf-8');
error_reporting(E_ALL);
ini_set('display_errors', 1);
		$mysqlhost="localhost"; // MySQL-Host angeben
        $mysqluser="stundenplan"; // MySQL-User angeben
        $mysqlpwd="untis"; // Passwort angeben
        $mysqldb="untis"; // Gewuenschte Datenbank angeben
$connection=mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die("Verbindungsversuch fehlgeschlagen");
  mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht waehlen.");
 
$sql=mysql_query("SELECT * FROM vertretungsplan");
while($row=mysql_fetch_assoc($sql))
 $output[]=$row;
 
print(json_encode($output));
 
mysql_close();
?>




Code:
package com.example.e_plan;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.protocol.BasicHttpContext;
import org.apache.http.protocol.HttpContext;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import org.w3c.dom.Document;

import com.example.e_plan.R;
import android.app.Activity;
import android.app.ListActivity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.StrictMode;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class Vertretungsplan extends Activity{
	InputStream is;
	ArrayList<String> results= new ArrayList<String>();
	JSONObject json_data;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		// Activate StrictMode
	   
		super.onCreate(savedInstanceState);
		setContentView(R.layout.vertretungsplan1);
		new rsstask().execute();
		
		
		
		
	}
		
		private class rsstask extends AsyncTask{
			ArrayAdapter<String>adaptereintrag = new ArrayAdapter<String>(Vertretungsplan.this, android.R.layout.simple_list_item_1, results);
		    
			protected Object doInBackground(Object... arg0) {
				
					String result = "";	
					ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
					try{
							 HttpClient httpclient = new DefaultHttpClient();
							 HttpPost httppost = new HttpPost("http://yourcloud.eichsfeld-gymnasium.de.de/app_neu/Verbindung.php");
							 httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
							 HttpResponse response = httpclient.execute(httppost);
							 HttpEntity entity = response.getEntity();
							 is = entity.getContent();
						 }
					catch(Exception e){
							 Log.e("log_tag", "Fehler bei der http Verbindung "+e.toString());
							 }
					try{
						 BufferedReader reader = new BufferedReader(new InputStreamReader(is,"utf-8"),8);
						 StringBuilder sb = new StringBuilder();
						 String line = null;
						 while ((line = reader.readLine()) != null) {
					 sb.append(line + "n");
						 
				}
						 is.close();
						 result=sb.toString();
						 }catch(Exception e){
						 Log.e("log_tag", "Error converting result ");
						 }
					try{
						 JSONArray jArray = new JSONArray(result);
						 for(int i=0;i<jArray.length();i++){
						 json_data = jArray.getJSONObject(i);
						 results.add((String) json_data.get("vertretungsplan"));
						 }
						 } catch(JSONException e){
							 Log.e("log_tag", "Error parsing data "+e.toString());
						 }
					return null;
						 
					}//schließt doInBackground
			
			protected void onPostExecute(String result){
				 ListView lv1 = (ListView)findViewById(R.id.listView2);
					lv1.setAdapter(adaptereintrag);
					}

			  
			
			
			
			
		}  //schließt AsyncTask	
	
	
		
		
			 
				

	
	
	/**
	 * @param args
	 * @throws IOException 
	 * @throws ClientProtocolException 
	 */
	public static void main(String[] args) throws ClientProtocolException, IOException {
		// TODO Auto-generated method stub
		
		
	 
	}//schließt main
	
}//schließt alles
 
Servus,

kannste dir nicht mal dein php-File im Browser aufrufen und schauen, wie die Ausgabe aussieht?

Ich hatte solche Konvertierungsfehler in meinem ersten JSON Projekt auch, wenn z.B. keine DB Verbindung aufgebaut werden konnte und das php File mir irgendwelche Fehlermeldungen ausgegeben hat.
 
Chris-Pi schrieb:
Servus,

kannste dir nicht mal dein php-File im Browser aufrufen und schauen, wie die Ausgabe aussieht?

.

Ja das habe ich schon gemacht. So wie er mir die daten ausgiebt sieht es mir typisch nach json aus. Also mit den geschweiften klammern und alles. Fehlermeldungen bekomme ich soweit keine in der phpdatei.
Oder kann es sein dass ich dadurch dass ich die daten schon in json konvertiere mir eine dopplung in meinen code reinbaue wenn ich das alles in ein json array abspeicher?
 
Zurück
Oben Unten