在Android应用程序中将JSON数据解析为字符串
我从Android应用程序连接服务器上的数据库,我想使用服务器发送给我的信息。 以下是我从服务器获得的响应:在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
[{"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);