为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

呼如林 2023-03-23 13:49:28
我尝试通过 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 descriptiontry {    description = (String) jsonObject.get("description");} catch (Exception e) {    description = "";}
查看完整描述

1 回答

?
慕森卡

TA贡献1806条经验 获得超8个赞

创建一个custom object并deserialize放入json string该对象的一个实例中。我将在下面展示一个使用gson库的解决方案


Maven 依赖


<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


String json = "{\"archived\":false,\"releaseDate\":\"2019-07-16\",\"name\":\"test 1.0\",\"self\":\"https://test/rest/api/latest/test/10000\",\"userReleaseDate\":\"16/Jul/19\",\"id\":\"10000\",\"projectId\":10000,\"released\":true}";

Gson gson = new GsonBuilder().create();

Model model = gson.fromJson(json, Model.class);

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


查看完整回答
反对 回复 2023-03-23
  • 1 回答
  • 0 关注
  • 92 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号