我有一個輸出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輸出過這引起了解析錯誤
這是錯誤的截圖,我收到(太大的截圖領先的隱藏性格,但你
對不起......我已經添加了。 – mrid
你使用org.json.JSONObject類還是org.json.simple.JSONObject。 ? –
爲什麼你的內容類型是'application/javascript'而不是'application/json'? – RealSkeptic