我尝试通过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 = "";
}
答案 0 :(得分:1)
将custom object
和deserialize
创建到该对象的实例中。我将在下面显示使用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
这样,您不必每次都分别检查每个参数即可将其分配给相应的成员变量。