2017-07-18 89 views
1

我得到以下錯誤:org.json.JSONException:值試驗(java.lang.String類型不能轉換到的JSONObject

org.json.JSONException: Value test(of type java.lang.String cannot be converted to JSONObject 

07-18 18:58:11.424 25827-25827/com.adeel.android.flightdemo W/System.err:  org.json.JSONException: Value test(of type java.lang.String cannot be converted to JSONObject 
07-18 18:58:11.424 25827-25827/com.adeel.android.flightdemo W/System.err:  at org.json.JSON.typeMismatch(JSON.java:111) 
07-18 18:58:11.424 25827-25827/com.adeel.android.flightdemo W/System.err:  at org.json.JSONObject.<init>(JSONObject.java:160) 
07-18 18:58:11.424 25827-25827/com.adeel.android.flightdemo W/System.err:  at org.json.JSONObject.<init>(JSONObject.java:173) 
07-18 18:58:11.424 25827-25827/com.adeel.android.flightdemo W/System.err:  at com.adeel.android.flightdemo.FlightDataModel.onPostExecute(FlightDataModel.java:86) 
07-18 18:58:11.424 25827-25827/com.adeel.android.flightdemo W/System.err:  at com.adeel.android.flightdemo.FlightDataModel.onPostExecute(FlightDataModel.java:21) 
07-18 18:58:11.424 25827-25827/com.adeel.android.flightdemo W/System.err:  at android.os.AsyncTask.finish(AsyncTask.java:632) 
07-18 18:58:11.424 25827-25827/com.adeel.android.flightdemo W/System.err:  at android.os.AsyncTask.access$600(AsyncTask.java:177) 
07-18 18:58:11.424 25827-25827/com.adeel.android.flightdemo W/System.err:  at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645) 
07-18 18:58:11.424 25827-25827/com.adeel.android.flightdemo W/System.err:  at android.os.Handler.dispatchMessage(Handler.java:102) 
07-18 18:58:11.424 25827-25827/com.adeel.android.flightdemo W/System.err:  at android.os.Looper.loop(Looper.java:145) 
07-18 18:58:11.424 25827-25827/com.adeel.android.flightdemo W/System.err:  at android.app.ActivityThread.main(ActivityThread.java:5832) 
07-18 18:58:11.424 25827-25827/com.adeel.android.flightdemo W/System.err:   at java.lang.reflect.Method.invoke(Native Method) 
07-18 18:58:11.424 25827-25827/com.adeel.android.flightdemo W/System.err:  at java.lang.reflect.Method.invoke(Method.java:372) 
07-18 18:58:11.424 25827-25827/com.adeel.android.flightdemo W/System.err:  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399) 
07-18 18:58:11.424 25827-25827/com.adeel.android.flightdemo W/System.err:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194) 

其中我正在此錯誤的行是:

JSONObject object = new JSONObject(result); 

這裏是我的代碼:

import android.os.AsyncTask; 
import android.util.Log; 

import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.net.HttpURLConnection; 
     import java.net.MalformedURLException; 
import java.net.URL; 


public class FlightDataModel extends AsyncTask<String, Void, String>{ 


    private String data = "https://api.themoviedb.org/3/movie/550?api_key=f1d314280284e94ff7d1feeed7d44fdf&callback=test"; 

URL mURL; 
HttpURLConnection mHttpURLConnection; 
String result = "" ; 
String main; 
JSONArray mArray = null; 
private String mImageIcon; 
private String movieTitle; 
private String movieDesc; 
private String movieRating; 


@Override 
protected String doInBackground(String... strings) { 

    try { 

     Log.d("FlightDemo", "doInBackground method called"); 
     mURL = new URL(data); 
     mHttpURLConnection = (HttpURLConnection)mURL.openConnection(); 
     mHttpURLConnection.connect(); 
     InputStream inputStream = mHttpURLConnection.getInputStream(); 
     InputStreamReader inputStreamReader = new InputStreamReader(inputStream); 

     int data = inputStreamReader.read(); 

     while (data != -1){ 

      char current = (char) data; 

      result += current; 

      data = inputStreamReader.read(); 

     } 



    } catch (MalformedURLException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 


    return result; 
} 

@Override 
protected void onPostExecute(String s) { 

    //What to do when the doInBackground Method is executed.. 

    try { 

     //JSONObject json = new JSONObject(result); 

     JSONObject object = new JSONObject(result); 

     // JSONArray array = new JSONArray(result); 



     Log.d("FlightDemo", object.toString()); 




    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 


    super.onPostExecute(s); 
} 

public String getImageIcon() { 
    return mImageIcon; 
} 

public String getMovieTitle() { 
    return movieTitle; 
} 

public String getMovieDesc() { 
    return movieDesc; 
} 

public String getMovieRating() { 
    return movieRating; 
} 

public String getData() { 
    return data; 
} 
} 

我一直在這個代碼幾天..我在雄初學者ID應用程序開發。所以,任何幫助非常感謝。

很多謝謝

+0

你能檢查一下你的字符串是否是新的JSONObject格式(「{你的字符串}」)。在https://stackoverflow.com/questions/10267910/jsonexception-value-of-type-java-lang-string-cannot-be-converted-to-jsonobject之前詢問過同樣的問題 – user8271644

+0

看起來你是新來的。歡迎!如果您不顯示您嘗試過的內容,並且將您呈現的代碼降低到仍然顯示該問題的最小數量,則人們不願意提供幫助。 –

回答

0

在你的json字符串中可能會有一些特殊/不可見的字符。您可以在轉換爲JSONObject之前打印結果字符串,或者在某個編輯器中打開它以顯示隱藏的字符並查看json是否正確。您也可以對輸入流使用UTF 8標準。

相關問題