我在下面提到了回复代码。
switch(responseCode) {
case 200:
HttpEntity entity = response.getEntity();
if(entity != null) {
String responseBody = EntityUtils.toString(entity);
Log.d("Responce", responseBody.toString());
}
break;
}
此代码显示如下响应:
{"id":9,"name":"babu","role":5,"rights":"IsDelivery","result":"}
我想将每个值存储在单独的String中。例如Sting id = 3;
Sting name = babu
。
请给我解决方案。
答案 0 :(得分:4)
有两个选项:
<强>更容易强>: 使用键作为属性创建一个类,如下所示:
class MyEntity {
private int id;
private String name;
private int roles;
private String rights;
// ... other attributes;
// setters and getters and constructors?
}
然后使用Gson
库(此处为https://code.google.com/p/google-gson/或来自 Android Studio 的maven存储库),并执行以下操作:
MyEntity myEntity = new Gson().fromJson(responseBody);
<强>硬强>
使用JSONObject
手动获取每个值:
JSONObject mainObject = new JSONObject(responseBody);
int id = mainObject.getInt("id");
String name = mainObject.getString("name");
// ....
答案 1 :(得分:2)
您需要解析JSON响应并将其存储到某些变量中。例如,假设您有类结构,如follow -
public class Person{
public String id;
public String name;
public String role;
public String rights;
public String result;
}
然后你可以将响应值存储在这个类中(如果你还没有字符串变量)
方法如下 -
public Person parseResponse(String jsonString){
Person person = new Person();
JsonObject root = new JsonObject(jsonString);
person.id = root.getString("id");
person.name = root.getString("name");
person.role = root.getString("role");
person.rights = root.getString("rights");
person.result = root.getString("result");
return person;
}
您可以直接将这些值保存在成员变量中,而不是将其保存到Person对象中,但我更喜欢这种方式。 请记住,您需要在此处理JsonException,因为如果json字符串中的任何错误,您的应用可能会崩溃。
PS:要遵循封装,您需要将Person类的成员字段设置为私有,并为它们创建getter和setter。这里的代码只是为了给你一个想法。
答案 2 :(得分:0)
尝试实施此目的:
String responseBody = EntityUtils.toString(entity);
ArrayList<String> S = new ArrayList<String>();
S = GenerateListCat(responseBody, tt);
和GenerateListCat;
private <T> ArrayList<T> GenerateListCat(String result, Type y) {
ArrayList<T> retData = new ArrayList<T>();
GsonBuilder gsonb = new GsonBuilder();
Gson gson = gsonb.create();
try {
JSONArray rslt = new JSONArray(result);
// Parse Response into our object
Type collectionType = y;
String tt = rslt.toString();
List<T> lst = new Gson().fromJson(tt, collectionType);
for (T l : lst) {
retData.add(l);
}
} catch (Exception e) {
Log.d("Error: ", e.getMessage());
}
return retData;
}