2016-09-26 153 views
1

我有一個輸出JSON字符串作爲輸出的API (here)。我想解析這個JSON。它剛剛工作,但我可能已經改變了我的API或Java代碼。無法將java.lang.string類型的Java值轉換爲jsonobject

這是我使用的代碼:

這裏,msg是包含API響應

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(); 
} 

我用笨框架在PHP的字符串。

這是在我的PHP模型的功能:

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; 
} 

這是我的PHP控制器:

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"}'; 
    } 

} 

我尋覓了很多,嘗試了很多不同的解決方案我發現了網絡,但我試過的解決方案中沒有一個能爲我解決問題。

UPDATE:

this給出了錯誤

this給出了錯誤

this解析精細,給我只是鍵未發現異常

Github示例json api和我的api給出了cannot convert string to json obj異常,但谷歌地圖api沒有。我的api格式有什麼問題嗎?

修正:我終於想通了,我的API輸出過這引起了解析錯誤

這是錯誤的截圖,我收到(太大的截圖領先的隱藏性格,但你

enter image description here

+0

對不起......我已經添加了。 – mrid

+0

你使用org.json.JSONObject類還是org.json.simple.JSONObject。 ? –

+0

爲什麼你的內容類型是'application/javascript'而不是'application/json'? – RealSkeptic

回答

0

我試圖解決這一問題的思路...),沒有什麼工作對我來說,我不知道爲什麼!我有一個解決方案,但我不知道它是否有意義!

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

感謝您的努力人,但沒有幫助... – mrid

相關問題