在Android应用程序中将JSON数据解析为字符串

在Android应用程序中将JSON数据解析为字符串,android,string,json,Android,String,Json,我从Android应用程序连接服务器上的数据库,我想使用服务器发送给我的信息。 以下是我从服务器获得的响应: [{"id":"1","userid":"1159448580","address":"Kishinev 3"}] 下面是我的函数,它正在实现与服务器的连接并尝试解析响应: String checkForUserIdGetBookmarks (String returnString) { InputStream is = null; String res

我从Android应用程序连接服务器上的数据库,我想使用服务器发送给我的信息。 以下是我从服务器获得的响应:

[{"id":"1","userid":"1159448580","address":"Kishinev 3"}]
下面是我的函数,它正在实现与服务器的连接并尝试解析响应:

String checkForUserIdGetBookmarks (String returnString) {
        InputStream is = null;
        String result = "";
        //the userId data to send
        ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
        nameValuePairs.add(new BasicNameValuePair("userId", userId));

        //http post
        try{
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost(PHP_URL);
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            HttpResponse response = httpclient.execute(httppost);
            HttpEntity entity = response.getEntity();
            is = entity.getContent();
        } catch(Exception e){
            Log.e("log_tag", "Error in http connection "+e.toString());
        }

        //convert response to string
        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();
            result = sb.toString();
        } catch(Exception e) {
            Log.e("log_tag", "Error converting result "+e.toString());
        }

        //parse json data
        try {
            JSONArray jArray = new JSONArray(result);
            for (int i=0; i<jArray.length(); i++) {
                JSONObject json_data = jArray.getJSONObject(i);
                Log.i("log_tag","id: "+json_data.getInt("id")+
                        ", userid: "+json_data.getString("userid")+
                        ", address: "+json_data.getInt("address")
                        );
                //Get an output to the screen
                returnString += "\n\t" + jArray.getJSONObject(i);
            }
        } catch(JSONException e) {
            Log.e("log_tag", "Error parsing data "+e.toString());
        }

        return returnString;
    }
您认为我的错误在哪里?您知道将服务器的响应转换为字符串的其他方法吗?我可以在以后使用该字符串。

使用:

String returnString = checkForUserIdGetBookmarks(); // and declare returnString inside the method
而不是:

String returnString = "";
checkForUserIdGetBookmarks(returnString);

字符串returnString=“”;checkForUserIdGetBookmarks(返回字符串);这似乎是个错误。您可以将其更改为String returnString=checkForUserIdGetBookmarks();或者我遗漏了什么?我的函数
checkForUserIdGetBookmarks(String-String)
需要一个字符串才能正常工作。即使我使用这个:
returnString=checkForUserIdGetBookmarks(returnString)我仍然没有得到一个persed字符串,而是一个空字符串。我试图说你可以更改你的函数。您在函数中使用的输入字符串似乎不是函数的输入
if发出错误-
局部变量returnString可能尚未初始化
-如果我将其用作:
String returnString=“”;returnString=checkForUserIdGetBookmarks(returnString)什么都没有发生-我仍然收到并清空toast。将代码更改为:
String returnString=checkForUserIdGetBookmarks();Toast useridToast=Toast.makeText(getApplicationContext(),returnString,Toast.LENGTH\u LONG);useridToast.show()String checkForUserIdGetBookmarks(){InputStream is=null;String result=“;String returnString=null;
returnString+=“\n\t”+jArray.getJSONObject(i)
但仍然是一个空的toast-解析函数可以吗?它是否生成错误?我的意思是,运行logcat时您看到了什么?它生成了一个错误…愚蠢的我-我输入了一个字符串作为地址,并希望得到一个int作为响应…感谢您的帮助!
String returnString = "";
checkForUserIdGetBookmarks(returnString);