我想更新我用我编写的一些代码制作的另一个线程,这些代码不起作用。我正在尝试解析我的信息,在发送发布请求后,看起来像这样 [{"fromUser":"Andrew"},{"fromUser":"Jimmy"}]
然后,我想获取这些用户,并将其添加到列表视图中。这是我发送HTTPpost的代码,然后是我尝试解析并将其放入适配器的代码。
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(htmlUrl);
List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>();
nameValuePair.add(new BasicNameValuePair("Username", "Brock"));
try {
httpPost.setEntity(new UrlEncodedFormEntity(nameValuePair));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
try {
HttpResponse response = httpClient.execute(httpPost);
// writing response to log
Log.d("Http Response:", response.toString());
} catch (ClientProtocolException e) {
// writing exception to log
e.printStackTrace();
} catch (IOException e) {
// writing exception to log
e.printStackTrace();
}
try {
JSONObject pendingUsers = new JSONObject("$myArray");
} catch (JSONException e) {
e.printStackTrace();
}
// Read response to string
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"utf-8"),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) {
return null;
}
// Convert string to object
try {
jsonObject = new JSONObject(result);
} catch(JSONException e) {
return null;
}
public void getJsonResult(JSONObject pendingRequests)
{
pendingRequests = jsonObject;
}
这是我尝试接收此内容并将其放入我的列表中的地方
HTTPSendPost postSender = new HTTPSendPost();
postSender.Setup(500, 050, "tesT", htmlUrl);
postSender.execute();
JSONObject pendingRequests = new JSONObject();
postSender.getJsonResult(pendingRequests);
try {
for(int i = 0; i < pendingRequests.length(); i++) {
JSONArray fromUser = pendingRequests.getJSONArray("fromUser");
pendingRequestsArray.add(i, fromUser.toString());
}
} catch (JSONException e) {
e.printStackTrace();
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.activity_friends, pendingRequestsArray);
pendingRequestsListView.setAdapter(adapter);
当我在我的应用程序上尝试它时,我在列表视图上没有得到任何结果,任何帮助将不胜感激。抱歉重新发布,但我现在有更多的信息和代码。下次我不会在没有我尝试过的代码的情况下提出问题。
尝试使用 JSONArray - 它有一个接受 JSON 字符串的构造函数,然后你可以访问它。例如:
myJsonString = "{'"Andrew'", '"Jimmy'"}";
JSONArray array = new JSONArray(myJsonString);
for(int i = 0; i < array.length(); i++) {
Log.v("json", array.optString(i));
// You can also use this
Log.v("json", array.getString(i));
// Or this, but you have to coerce yourself
Log.v("json", array.get(i).toString());
}
在Android中(我不知道它是否是Java功能),您可以使用JSONObject和JSONArray类来解析,存储和使用JSON。
JSONObject myObject = new JSONObject(responseString);
初始化 JSONObject 后,您可以使用以下命令从中获取值:
myObject.getString(key);//String, or Integer, or whatever JSON admits
响应:
[
{"fromUser":"Andrew"},
{"fromUser":"Jimmy"}
]
所以基本上,你收到的是一个JSON数组。我建议,您宁愿将数据编码为来自后端的 JSON 对象,并在应用程序端接收它,
{
"DATA":[
{"fromUser":"Andrew", "toUser":"Kevin"},
{"fromUser":"Jimmy", "toUser":"David"}
]
}
这将是你在Java中的Android端代码。
void jsonDecode(String jsonResponse)
{
try
{
JSONObject jsonRootObject = new JSONObject(jsonResponse);
JSONArray jData = jsonRootObject.getJSONArray("DATA");
for(int i = 0; i < jData.length(); ++i)
{
JSONObject jObj = jData.getJSONObject(i);
String fromUser = jObj.optString("fromUser");
String toUser = jObj.optString("toUser");
Toast.makeText(context, "From " + fromUser "To" + toUser + ".",0).show();
}
}
catch(JSONException e)
{
e.printStackTrace();
}
}