获取jsonObject不存在属性的最佳方法

时间:2019-07-12 15:19:51

标签: java json jira-rest-api

我尝试通过REST API从JIRA收集数据。

我可以获得带有JSONObjects的jsonArray。这些JSONObjects可能包含属性a; b; c; d。某些JSONObjects可能仅包含例如a; b; c缺少属性d。

我正在尝试在代码中收集这些属性。由于某些JSONObjects缺少某些属性,因此我可能会收到这样的错误消息:

Exception in thread "main" org.json.JSONException: JSONObject["d"] not found.

我使用了try / catch方法(如下所示),因此我通过忽略它来避免出现错误消息。

是否有更好的方法可用于解决此类问题?

JsonNode jsonNode = response.getBody();
JSONArray jsonArray = jsonNode.getArray();
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
String name = (String) jsonObject.get("name");
String startDate = (String) jsonObject.get("startDate");
String releaseDate = (String) jsonObject.get("releaseDate");
Integer projectId = (Integer) jsonObject.get("projectId");
String description;
// getting the error for the attribute description
try {
    description = (String) jsonObject.get("description");
} catch (Exception e) {
    description = "";
}

1 个答案:

答案 0 :(得分:1)

custom objectdeserialize创建到该对象的实例中。我将在下面显示使用json string

的解决方案

Maven依赖

gson

模型类

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.5</version>
</dependency>

然后您可以public class Model { private boolean archived; private String releaseDate; private String name; private String self; private String userReleaseDate; private long id; private long projectId; private boolean released; //getters && setters ommitted public Model(){ }

deserialize the JSON string into the Model class like this

这样,您不必每次都分别检查每个参数即可将其分配给相应的成员变量。