Java 将json.org库中的jsonparser代码转换为Gson库

Java 将json.org库中的jsonparser代码转换为Gson库,java,android,json,gson,Java,Android,Json,Gson,我是Gson库的新手,我正在努力找到一种合适的方法来使用Gson解析非常简单的json数据。这里是示例json { "response": { "status_code": "200", "message": "User successfully registered.", "response_for": "register" } } 我使用与android捆绑的json.org库对其进行如下解析 try { JSONObject root = new

我是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。

下面的代码返回字符串值

 "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"));
请试试这个,可能有用

我只对响应的状态代码值感兴趣,所以 创建pojo类是一种浪费

那么,为什么首先需要使用Gson呢

引用gson docs“它可用于将JSON字符串转换为等效的Java对象”

要获得
状态\u code
,您的第一个方法应该有效

使用Gson

public class Response { 

Res response;
}
那就有

public class Res {

public String status_code;
public String message;
public String response_for;

public Res(){}
}
然后

日志

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

使用JsonArray对象解析嵌套的json@KamleshArya,但我的示例json中没有JsonArray,所以我必须这样做吗?您的链接使用的是org.json类而不是gson类我需要将解析代码更改为gson
JsonObject.class
的结构取决于您得到的响应类型。若响应包含嵌套对象,那个么您应该使用子对象创建类。有关更多详细信息,请参阅@maddy,我知道andI正在试图避免itI将使用POJO类来处理Gson中的其他复杂json对象。这是知道身份验证成功的示例,我的项目需要大量的json解析。如果我必须为这种简单的json创建pojo类,那么我可能会对这种情况使用我的第一个方法。但我不确定刚开始使用Gson。@IllegalArgument使用第一种方法。但是如果您想要java对象,那么就使用gson。它可以工作,但是我正在寻找一种不使用pojo类和json的解决方案。除此之外,我还需要解析大量的json,我的类数已经达到100+lol。我想我将使用两个json解析器gson和json.org。这是我最糟糕的情况。@IllegalArgument用于您的情况,因为您只需要状态代码。第一种方法可以。但您必须决定是否需要java对象。您是否需要解析少量数据并不重要more@IllegalArgument你有多少活动?如果你有超过30或50,那么你的设计有问题这是我在问题中发布的代码。请仔细阅读。请正确阅读我的代码,我已经编辑了这一行:int status=Integer.parseInt(response.getString(“status_code”);在代码中,我首先从字符串中的response获取值,并将该字符串转换为integerI,这是一个浪费的代码。将可直接作为整数提取的200转换为字符串并再次返回整数有什么意义?如果使用integer获取该值,将给出解析错误。
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