2013-11-29 64 views
0

這是我的java代碼。我想顯示登錄到另一個頁面。 JSON斯喬解析數據時出錯org.json.JSONException:java.lang.String類型的值無法轉換爲JSONArray

public void jsonen() 
{ 
String result = response.toString(); 

try{ 

JSONArray jArray = new JSONArray(result); 

} 
    catch(JSONException e){ 
      Log.e("log_tag", "Error parsing data "+e.toString()); 
    } 



    Log.i("RESULT", result+""); 
+0

你在哪一行出錯?顯示該行。 – Avijit

+0

11-29 13:16:02.860:E/log_tag(648):解析數據時出錯org.json.JSONException:java.lang.String類型的值無法轉換爲JSONObject – vcav

+0

我在問java代碼的哪一行?如果你不知道,請提供完整的logcat。 – Avijit

回答

2

在日誌中你得到JSONObject,而不是在web服務JSONArray response.so嘗試字符串轉換爲JSONObject的,而不是作爲JSONArray:

JSONObject jsonobj = new JSONObject(result); 
    //get value from json object 
    teamStatus = jsonobj.getString("teamStatus"); 
+0

不工作...錯誤仍在退出... – vcav

+0

11-29 12:46:34.219:E/log_tag(986):解析數據時出錯org.json.JSONException:類型的值無法將java.lang.String轉換爲JSONObject – vcav

+0

@ user3044615:請更新您的最新代碼和日誌以獲得更多幫助 –

0

爲了解析和獲取數據形成一個JSON我們這個:

在你的src中添加一個JsonParser.java。和java文件將是這樣的:

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.io.UnsupportedEncodingException; 
import java.util.List; 

import org.apache.http.HttpEntity; 
import org.apache.http.HttpResponse; 
import org.apache.http.NameValuePair; 
import org.apache.http.client.ClientProtocolException; 
import org.apache.http.client.entity.UrlEncodedFormEntity; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.json.JSONException; 
import org.json.JSONObject; 

import android.util.Log; 

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 
      DefaultHttpClient httpClient = new DefaultHttpClient(); 
      HttpPost httpPost = new HttpPost(url); 
      httpPost.setEntity(new UrlEncodedFormEntity(params)); 

      HttpResponse httpResponse = httpClient.execute(httpPost); 
      HttpEntity httpEntity = httpResponse.getEntity(); 
      is = httpEntity.getContent(); 

     } catch (UnsupportedEncodingException e) { 
      e.printStackTrace(); 
     } catch (ClientProtocolException e) { 
      e.printStackTrace(); 
     } catch (IOException 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; 

    } 
} 

現在添加UserFunction.Java文件在src中。這將是這樣的:

import java.util.ArrayList; 
import java.util.List; 

import org.apache.http.NameValuePair; 
import org.apache.http.message.BasicNameValuePair; 
import org.json.JSONObject; 

import android.content.Context; 

public class UserFunctions { 

    private JSONParser jsonParser; 

    private static String loginURL = YOUR_URL; 

public UserFunctions() { 
     jsonParser = new JSONParser(); 
    } 
public JSONObject loginUser(String email, String password) { 
     // Building Parameters 
     List<NameValuePair> params = new ArrayList<NameValuePair>(); 
     params.add(new BasicNameValuePair("email", email)); 
     params.add(new BasicNameValuePair("password", password)); 
     JSONObject json = jsonParser.getJSONFromUrl(loginURL, params); 
     // return json 
     // Log.e("JSON", json.toString()); 
     return json; 
    } 
} 

和你的login.java將是:

String email = inputEmail.getText().toString(); 
String password = inputPassword.getText().toString(); 
UserFunctions userFunction = new UserFunctions(); 
JSONObject json = userFunction.loginUser(email, password); 
// check for login response 
try { 
//do your staff 
}catch{ 
} 
+0

只要讓我知道它是否對您沒有幫助。 – Avijit

+0

CustomHttpClient.executeHttpGet和CustomHttpClient.executeHttpPost是String返回類型。我無法更改JSONObject。一些紅線會出現... – vcav

+0

login.java文件中的88和191行是什麼? – Avijit

0

我有同樣的問題並解決它。檢查你的PHP文件,尤其是在JSON轉換之前打印(「」)。

相關問題