Intereting Posts
Отгрузка рассчитывается по весу и количеству товаров Выберите два последовательных слова регулярным выражением Apache 2.4.23 PHP7.x Windows 10 x64 php_curl не работает magento удалить кнопку редактирования и сделать ее редактируемой, как только мы нажмем на текстовое поле Оверлей / оповещение фона JQuery без события .onclick – ответчик php? mysql Выберите один столбец дважды из той же таблицы с разными датами в предложении where Динамическое создание страницы входа пользователя FOS UserBundle Как показать магазины с ближайшими длинными / латами с помощью функции поиска – Laravel 5 eloquent Как сделать автоматический вход в систему, сохранить сеанс в браузере Некоторые электронные письма контактной формы не отправляются из-за фильтрации спама на хосте Вход с Amazon говорит, что пользователь не согласился, но у них есть – Alexa SMAPI загрузка из CSV и пересылка на другой URL-адрес Красноречивые коллекции: каждый против foreach Проблема с загрузкой данных в базу данных Передача NULL из PHP в MySQL для автоматического увеличения

JSONException: значение типа java.lang.String не может быть преобразовано в JSONObject

Я столкнулся с проблемой, действительная строка JSON не может стать объектом JSON.

Я тестировал ответ, поступающий с сервера, это действительный JSON.

Я проверил в Интернете, речь идет о проблеме UTF-8 с DOM. Но даже я изменил charset в Notepad ++ в UTF-8 без DOM, эта же ошибка все еще выходит.

Мои коды:

<?php require_once("Connection/conn.php"); //parse JSON and get input $json_string = $_POST['json']; $json_associative_array = json_decode($json_string,true); $userId = $json_associative_array["userId"]; $password = $json_associative_array["password"]; $userType = $json_associative_array["userType"]; //get the resources $json_output_array = array(); $sql = "SELECT * FROM account WHERE userId = '$userId' AND password = '$password' AND userType = '$userType'"; $result = mysql_query($sql); //access success? if (!$result) { die('Invalid query: ' . mysql_error()); $json_output_array["status"] = "query failed"; } else{ $json_output_array["status"] = "query success"; } //find the particular user? if (mysql_num_rows($result) > 0){ $json_output_array["valid"] = "yes"; } else{ $json_output_array["valid"] = "no"; } //output JSON echo json_encode($json_output_array); ?> 

Android-коды:

 public boolean login() { // instantiates httpclient to make request DefaultHttpClient httpClient = new DefaultHttpClient(); // url with the post data String url = SERVER_IP + "/gc/login.php"; JSONObject holder = new JSONObject(); try { holder.put("userId", "S1"); holder.put("password", "s12345"); holder.put("userType", "supervisor"); } catch (JSONException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } Log.d("JSON", holder.toString()); // HttpPost HttpPost httpPost = new HttpPost(url); //FormEntity ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); nameValuePairs.add(new BasicNameValuePair("json", holder.toString())); try { httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); } catch (UnsupportedEncodingException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } // execution and response boolean valid = false; try { HttpResponse response = httpClient.execute(httpPost); Log.d("post request", "finished execueted"); String responseString = getHttpResponseContent(response); Log.d("post result", responseString); //parse JSON JSONObject jsonComeBack = new JSONObject(responseString); String validString = jsonComeBack.getString("valid"); valid = (validString.equals("yes"))?true:false; } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } return valid; } private String getHttpResponseContent(HttpResponse response) { String responseString = ""; try { BufferedReader rd = new BufferedReader(new InputStreamReader( response.getEntity().getContent())); String line = ""; while ((line = rd.readLine()) != null) { responseString += line ; } rd.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return responseString; } 

JSON поступает с сервера:

 { "status": "query success", "valid": "yes" } 

unformat JSON:

{"status":"query success","valid":"yes"}

Когда я копирую это в блокнот ++, он становится ?{"status":"query success","valid":"yes"} Кажется, что есть невидимый символ.

Я исправил его с помощью решения, предоставленного MuhammedPasha, которое подстроит строку JSON для удаления невидимого персонажа . И я подстрою строку JSON от 1, чтобы исправить мою проблему.

Есть способ обнаружить эти невидимые персонажи, скопировать результат журнала в блокнот ++ (копировать! Нет ввода). Если есть какой-либо символ (знак вопроса), они указывают на наличие некоторого невидимого символа.

У меня была такая же проблема. Возможно, вам нужно сохранить без юникодной подписи (BOM).