Значение Java типа java.lang.string не может быть преобразовано в jsonobject

У меня есть API (Вот) который выводит строку JSON в качестве вывода. Я хочу разобрать этот JSON. Это работало некоторое время назад, но я мог что-то изменить в своем API или Java-коде.

Это код, который я использую:

Вот, 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();
}

Я использую рамки codeigniter в 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"}';
}

}

Я много искал и пробовал много разных решений, которые я нашел в Интернете, но ни одно из решений, которые я пробовал, не помогло мне.

ОБНОВИТЬ :

этот выдает ошибку

этот выдает ошибку

Но

этот разбирает нормально и дает мне только ключ не найден исключение

Github образец JSON API и мой API дают cannot convert string to json obj исключение, но Google Maps API не делает. Что-то не так с моим форматом API?

ИСПРАВЛЕНО: я наконец-то понял, что мой вывод API имеет скрытый лидирующий символ, который вызвал ошибку разбора

Это скриншот ошибки, которую я получаю (Слишком большой скриншот, но вы поняли …)

введите описание изображения здесь

1

Решение

Я пытался решить проблему, у меня ничего не получалось, и я не знаю почему! У меня есть решение, но я не знаю, имеет ли оно смысл!

    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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]