get JSONException: il valore del tipo java.lang.String non può essere convertito in JSONObject quando si analizza una risposta JSON

Ho sviluppato un'applicazione Android che richiede le coordinate di posti da un server che risponde in formato JSON (per il momento che invia solo due posti):

questo è il codice php dal server:

  • Come faccio a eseguire script Lua su Android in un'applicazione Java?
  • Come misurare il tempo da shell adb con risoluzione millisecondi?
  • Registri di debug dettagliati con Volley
  • onSurfaceCreated () chiamato cambiamenti di orientamento each volta
  • Punti di interruzione nella sorgente della piattaforma Android
  • Animazione quando si cambia la vista di text
  • $place = $db->getCoordinates($name); if ($place != false) { $response[1]["success"] = 1; $response[1]["place"]["H"] = $place[1]["H"]; $response[1]["place"]["V"] = $place[1]["V"]; $response[1]["place"]["placeid"] = $place[1]["placeid"]; $response[1]["place"]["name"] = $place[1]["name"]; $response[1]["place"]["type"] = $place[1]["type"]; $response[1]["place"]["note"] = $place[1]["note"]; // place found // echo json with success = 1 $response[2]["success"] = 1; $response[2]["place"]["H"] = $place[2]["H"]; $response[2]["place"]["V"] = $place[2]["V"]; $response[2]["place"]["placeid"] = $place[2]["placeid"]; $response[2]["place"]["name"] = $place[2]["name"]; $response[2]["place"]["type"] = $place[2]["type"]; $response[2]["place"]["note"] = $place[2]["note"]; echo json_encode($response); } 

    Quando l'applicazione ottiene le coordinate, cerca di analizzarli in questo modo:

      JSONObject json_places = userFunction.getPlaces(); JSONObject places = json_places.getJSONObject("1"); JSONObject coord = places.getJSONObject("place"); 

    getplaces ():

     public JSONObject getPlaces(){ // Building Parameters List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("tag", allcoordinates_tag)); JSONObject json = jsonParser.getJSONFromUrl("http://"+ip+placesURL, params); // return json Log.i("JSON", json.toString()); return json; } 

    JSONParser:

     public class JSONParser { static InputStream is = null; static JSONObject jObj = null; static String json = ""; // constructor public JSONParser() { } public JSONObject getJSONFromUrl(String url, List<NameValuePair> params) { // Making HTTP request try { // defaultHttpClient HttpPost httpPost = new HttpPost(url); HttpParams httpParameters = new BasicHttpParams(); int timeoutConnection = 9000; HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection); int timeoutSocket = 9000; HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket); DefaultHttpClient httpClient = new DefaultHttpClient(httpParameters); httpPost.setEntity(new UrlEncodedFormEntity(params)); HttpResponse httpResponse = httpClient.execute(httpPost); HttpEntity httpEntity = httpResponse.getEntity(); is = httpEntity.getContent(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (ConnectTimeoutException e) { e.printStackTrace(); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } try { BufferedReader reader = new BufferedReader(new InputStreamReader( is, "iso-8859-1"), 8); StringBuilder sb = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } is.close(); json = sb.toString(); Log.e("JSON", json); } catch (Exception e) { Log.e("Buffer Error", "Error converting result " + e.toString()); } // try parse the string to a JSON object try { jObj = new JSONObject(json); } catch (JSONException e) { Log.e("JSON Parser", "Error parsing data " + e.toString()); } // return JSON String return jObj; } } 

    e qui è il JSON con l'errore:

    debug di eclissi

    quando l'applicazione cerca di analizzare la risposta JSON, si blocca e invia un JSONException: Valore del tipo java.lang.String non può essere convertito in JSONObject come posso risolvere questo problema? GRAZIE

  • Frammento pop di Android dal backstack con animation
  • Disegno di forma di background con un angolo e due taglienti - Android
  • Errore durante il trasferimento di app da Eclipse a Android Studio
  • Software di navigazione offline per Android - cosa c'è là fuori?
  • AbstractGoogleClient: segnale fatale 11 (SIGSEGV)
  • Registra video da camera da Android a MP4
  • 2 Solutions collect form web for “get JSONException: il valore del tipo java.lang.String non può essere convertito in JSONObject quando si analizza una risposta JSON”

    Il servizio web non sta creando JSON valido. Una string JSON può solo iniziare con { o [ . La tua parte inizia con l' "Array" string.

    Puoi leggere il formato JSON nella sua voce di Wikipedia qui .

    Basta rimuovere "Array" all'inizio, il json è cattivo formato

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.