Soru & Cevap

Mysql veri çekerken JSON hatası

14.04.2015 - 12:32

Herkese merhaba

Mysqldeki veritabanımdan veri çekip listviewde göstermek istiyorum fakat "Error parsing data org.json.JSONException: Value <br of type java.lang.String cannot be converted to JSONObject" hatası alıyorum.Anladığım kadarıyla veritabanı bağlantısında sorun yok ama ilk veriyi çekerken sorun yaşıyorum.Nette bu sorunu yaşayanlar olmuş ama çözümler bana uymadı.Neresi yanlış bu kodlarda?Şimdiden teşekkürler.

Activity dosyam:

[code]public class EtkinlikTakvimiActivity extends Activity {

    ListView lv;

    // Progress Dialog
    private ProgressDialog pDialog;

    // Creating JSON Parser object
    JSONParser jParser = new JSONParser();

    //ArrayList<HashMap<String, String>> etkinlikList;
    ArrayList<Etkinlik> etkinlikList;


    // url to get all etkinlikler list
    private static String url_tum_etkinlikler = "http://10.0.3.2/Bitirme/get_tum_etkinlikler.php";

    // JSON Node names
    private static final String TAG_SUCCESS = "success";
    private static final String TAG_ETKINLIKLER = "etkinlikler";
    private static final String TAG_ID = "id";
    private static final String TAG_AD = "ad";
    private static final String TAG_YER = "yer";
    private static final String TAG_TARIH = "tarih";
    private static final String TAG_BASLANGIC_SAATI = "baslangicsaati";
    private static final String TAG_BITIS_SAATI = "bitissaati";

    // etkinlikler JSONArray
    JSONArray etkinlikler = null;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_etkinlik_takvimi);

        // Hashmap for ListView
        //etkinlikList = new ArrayList<HashMap<String, String>>();
        etkinlikList = new ArrayList<Etkinlik>();

        // Loading etkinlikler in Background Thread
        new LoadAllProducts().execute();

        // Get listview
        lv = (ListView) findViewById(R.id.lvEtkinlikTakvimi);


    }

    // Response from Edit Product Activity
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        // if result code 100
        if (resultCode == 100) {
            // if result code 100 is received
            // means user edited/deleted product
            // reload this screen again
            Intent intent = getIntent();
            finish();
            startActivity(intent);
        }

    }
   
    class LoadAllProducts extends AsyncTask<String, String, String> {

       
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(EtkinlikTakvimiActivity.this);
            pDialog.setMessage("Loading etkinlikler. Please wait...");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(false);
            pDialog.show();
        }

        /**
         * getting All etkinlikler from url
         */
        protected String doInBackground(String... args) {
            // Building Parameters
            List<NameValuePair> params = new ArrayList<NameValuePair>();
            // getting JSON string from URL
            JSONObject json = jParser.makeHttpRequest(url_tum_etkinlikler, "GET", params);

            // Check your log cat for JSON reponse
            Log.d("All Products: ", json.toString());

            try {
                // Checking for SUCCESS TAG
                int success = json.getInt(TAG_SUCCESS);

                if (success == 1) {
                    // etkinlikler found
                    // Getting Array of Products
                    etkinlikler = json.getJSONArray(TAG_ETKINLIKLER);

                    // looping through All Products
                    for (int i = 0; i < etkinlikler.length(); i++) {
                        JSONObject c = etkinlikler.getJSONObject(i);

                        // Storing each json item in variable
                        String id = c.getString(TAG_ID);
                        String ad = c.getString(TAG_AD);
                        String tarih = c.getString(TAG_TARIH);
                        String yer = c.getString(TAG_YER);
                        String baslangicssati = c.getString(TAG_BASLANGIC_SAATI);
                        String bitissaati = c.getString(TAG_BITIS_SAATI);

                        // creating new HashMap
                        //HashMap<String, String> map = new HashMap<String, String>();
                        Etkinlik map = new Etkinlik(id, ad, tarih, yer, baslangicssati, bitissaati);

                        etkinlikList.add(map);
                    }


                } else {
                    // no etkinlikler found
                    // Launch Add New product Activity

                    Toast.makeText(getApplicationContext(), "BOŞ", Toast.LENGTH_LONG).show();

                    //Intent i = new Intent(getApplicationContext(),
                    //        NewProductActivity.class);
                    // Closing all previous activities
                    //i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    //startActivity(i);
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }

            return null;
        }
        protected void onPostExecute(String file_url) {
            // dismiss the dialog after getting all etkinlikler
            pDialog.dismiss();
            // updating UI from Background Thread
            runOnUiThread(new Runnable() {
                public void run() {


                    EtkinlikTakvimiAdapter adaptorumuz = new EtkinlikTakvimiAdapter(EtkinlikTakvimiActivity.this, etkinlikList);
                    lv.setAdapter(adaptorumuz);

                }
            });

        }

    }
}

[/code]

 

php dosyam:

<?php

/*
 * Following code will list all the etkinlikler
 */

// array for JSON response
$response = array();


// include db connect class
require_once __DIR__ . '/db_connect.php';

// connecting to db
$db = new DB_CONNECT();

// get all etkinlikler from etkinlikler table
$result = mysql_query("SELECT *FROM etkinlikler") or die(mysql_error());

// check for empty result
if (mysql_num_rows($result) > 0) {
    // looping through all results
    // etkinlikler node
    $response["etkinlikler"] = array();
    
    while ($row = mysql_fetch_array($result)) {
        // temp user array
        $etkinlik = array();
        $etkinlik["_id"] = $row["_id"];
        $etkinlik["ad"] = $row["ad"];
        $etkinlik["tarih"] = $row["tarih"];
        $etkinlik["yer"] = $row["yer"];
        $etkinlik["baslangicssati"] = $row["baslangicssati"];
        $etkinlik["bitissaati"] = $row["bitissaati"];

 

        // push single etkinlik into final response array
        array_push($response["etkinlikler"], $etkinlik);
    }
    // success
    $response["success"] = 1;

    // echoing JSON response
    echo json_encode($response);
    
} else {
    // no etkinlikler found
    $response["success"] = 0;
    $response["message"] = "No etkinlikler found";

    // echo no users JSON
    echo json_encode($response);
}
?>

 

870 Görüntülenme

1 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-1372-1408467635.jpg
ahmtbrk
14.04.2015 - 08:14

Şu yorumu yapabilirim kodlara bakmadan.

<br> bir html tagıdır.Sen jsonu okumaya calıstıgında sana html kodu dönüyor bu sebepten jsonu parse edemiyorsun.

İki sebebi olabilir.Yanlış url vs yazıyorsundur seni 404 sayfasına atıyordur.

Diğer aklıma gelen ise sitenin mobil sürümü mevcut olabilir sen mobilden request attığında seni o sayfaya yönlendiriyordur bu yüzden html kodlarını görüyorsundur.

HasanSERT
15.07.2017 - 02:23
Hocam aynı hatayı bende alıyorum sizezahmet banada yardımcı olurmusunuz ?
Mehmet Onat Güvenir
16.04.2015 - 10:56
Ahmet bey çözümü buldum. Json çıktısı veren sayfada mysql deprecated uyarısı veriyordu çıktıya etki ettiğini düşünmemiştim.Dediğin gibi jsonlintten bakınca anladım hatanın htmlleri de çıktıya dahil oluyormuş.Teşekkür ederim yardımınız için.
Mehmet Onat Güvenir
15.04.2015 - 12:43
Ahmet bey öncelikle bağlantığım yer localhost.Kullandığım ip de genymotion için kullanılan localhost ip si. php dosyamı browserda çalıştırdığımda bir json array döndürüyor hata da vermiyor. Url yanlış değil biliyorum çünkü yanlış yazdığım da oldu onun fırlattığı hata farklıydı onu çözdüm.Ayrıca uygulamada da görebiliyorum linke bağlanıyor ama veriyi çekerken sorun yaşıyor. Json parsing ile ilk defa uğraşıyorum.Çakıldım kaldım bu hata yüzünden :/