我是Gson库的新手,我正在努力找到一种使用Gson解析非常简单的json数据的合适方法。下面是样本json。
{
"response": {
"status_code": "200",
"message": "User successfully registered.",
"response_for": "register"
}
}
我使用与android捆绑的json.org库解析它如下。
try {
JSONObject root = new JSONObject(json);
JSONObject response = root.getJSONObject("response");
int status = response.getInt("status_code");
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
至于Gson,我遇到的问题是创建POJO类。我只对响应的status_code值感兴趣,所以创建一个pojo类是一种浪费。我试过的样本Gson如下:
JsonObject root = new Gson().fromJson(json, JsonObject.class);
Sring result = jobj.get("test").toString();
使用此代码,我只能解析非嵌套的json。
答案 0 :(得分:2)
我只对响应的status_code值感兴趣 创建一个pojo类是一种浪费。
那你为什么要首先使用Gson。
引用gson docs"它可用于将JSON字符串转换为等效的Java对象"
要获得status_code
你的第一个方法应该有效。
使用Gson
public class Response {
Res response;
}
然后有
public class Res {
public String status_code;
public String message;
public String response_for;
public Res(){}
}
然后
InputStreamReader isr = new InputStreamReader (is);
Gson gson = new Gson();
Response lis = new Gson().fromJson(isr, Response.class);
Log.i("Response is ",""+lis.response.status_code);
Log.i("Message is ",""+lis.response.message);
Log.i("Response_for is ",""+lis.response.response_for);
日志
06-13 17:55:52.126: I/Response is(8776): 200
06-13 17:55:52.126: I/Message is(8776): User successfully registered.
06-13 17:55:52.126: I/Response_for is(8776): register
答案 1 :(得分:-1)
以下代码返回字符串值。
"status_code": "200",
"message": "User successfully registered.",
"response_for": "register"
你得到的是整数,我想你必须这样写,
JSONObject root = new JSONObject(json);
JSONObject response = root.getJSONObject("response");
int status = Integer.parseInt(response.getString("status_code"));
请试试这个,可能会有用。