2016-09-26 7 views
1

Ich habe eine API (here), die einen JSON-String als Ausgabe ausgibt. Ich möchte dieses JSON analysieren. Es hat vor einiger Zeit funktioniert, aber ich habe vielleicht etwas in meiner API oder Java-Code geändert.Java-Wert vom Typ java.lang.string kann nicht in jsonobject konvertiert werden

Dies ist der Code ich benutze:

Hier msg ist eine Zeichenkette, die die api Antwort

try { 
    /* this prints */ 
    Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show(); 
    JSONObject jObject = new JSONObject(msg); 
    String cleaner_id = jObject.getString("cleaner_id"); 

    /* but this does not */ 
    Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show(); 

} 
catch(Exception e) { 
    Toast.makeText(MainActivity.this, e.toString(), Toast.LENGTH_SHORT).show(); 
} 

Ich verwende codeigniter Framework in PHP enthält.

Dies ist die Funktion in meinem PHP-Modell:

public function get_cleaner($mobile, $pass){ 
    $this->db->select("cleaner.cleaner_id, cleaner.cleaner_name, cleaner.date_of_joining, cleaner.current_address, cleaner.mobile1, cleaner.mobile2, cleaner.date_of_birth, skill.skill_name as cleaner_designation"); 
    $this->db->from("cleaner"); 
    $this->db->join('skill', 'cleaner.designation = skill.skill_id', 'left'); 
    $this->db->where("mobile1", $mobile); 
    $this->db->where("user_pass", $pass); 
    $data = $this->db->get()->result_array(); 

    return $data; 
} 

Und das ist mein PHP-Controller:

public function getCleaner(){ 
    $mobile_no = $this->input->get('mobile'); 
    $pass = $this->input->get('pass'); 
    if(!is_null($mobile_no) && !is_null($pass)) 
    { 
     header('Content-Type: application/javascript'); 
     $data = $this->cleaner_model->get_cleaner($mobile_no, $pass); 
     if(!empty($data)) 
      echo json_encode($data[0]); 
     else 
      echo '{"cleaner_id":"-10","cleaner_name":"cleaner_not_found"}'; 
    } 

} 

ich viel und versuchte viele verschiedene Lösungen gesucht Ich habe n web gefunden, aber keine der Lösungen, die ich ausprobiert habe, hat sich für mich bewährt.

UPDATE:

this gibt dem Fehler

this den Fehler

Aber

thisfeinen analysiert und gibt mir nur Schlüssel nicht gefunden Ausnahme

gibt

Github Probe json api und meine api geben die cannot convert string to json obj Ausnahme, aber Google Maps API nicht. Ist irgendetwas mit meinem api-Format nicht in Ordnung?

FIXED: ich, dass mein api Ausgang einen führenden versteckten Charakter hatte endlich herausgefunden, die die Parsing-Fehler verursacht

I Dies ist ein Screenshot des Fehlers (Too big einen Screenshot zu erhalten, aber Sie bekommen die Idee ...)

enter image description here

+0

Sorry ... Ich habe es jetzt hinzugefügt. – mrid

+0

Verwenden Sie org.json.JSONObject class oder org.json.simple.JSONObject. ? –

+0

Warum ist Ihr Inhaltstyp "application/javascript" anstelle von "application/json"? – RealSkeptic

Antwort

0

ich habe versucht, das Problem zu lösen, nichts funktionierte für mich und ich weiß nicht, warum! Ich habe eine Lösung, aber ich weiß nicht, ob es Sinn macht!

try{ 
     HttpURLConnection conn = (HttpURLConnection) new URL("http://mridulahuja.com/api/index.php/cleaner/getCleaner?mobile=1111111111&pass=njnjhbh").openConnection(); 
     InputStreamReader isr = new InputStreamReader(conn.getInputStream(), "UTF-8"); 
     BufferedReader reader = new BufferedReader(isr); 
     String line = reader.readLine(); 
     if(line != null){ 
      line = line.substring(line.indexOf("{")); 
      JSONObject obj = new JSONObject(line); 
      System.out.println(obj.getString("cleaner_name")); 
     } 
     reader.close(); 
    }catch(Exception e){ 
     System.err.println(e.getMessage()); 
    } 
+0

Danke für Ihre Mühe Mann, aber hat nicht geholfen ... – mrid

Verwandte Themen