java - JsonNode Null JsonArray 解析器
问题描述
我有一个想要使用 JSON Parser 解析的 JsonNode 响应( unirest )。
现在,假设结构有点像这样:
{
"expand" : "names",
"customfield_1" : null,
"customfield_2" : [ { "email":"123@gmail.com"},{...}]
}
所以,问题在于它customfield_1
是一个 JsonArray,有时它可能为空。
所以,一旦我使用
JSONArray myArr = myObj.getJSONArray("customfield_1")
我收到以下错误:
org.json.JSONException: JSONObject["customfield_1"] is not a JSONArray.
我试图更改为 JsonObject 和 JsonString 但它们也没有帮助。如何避免呢?
解决方案
null
您可以在获取数组之前显式检查该字段是否存在:
JSONArray myArr = myObj.isNull("field") ? null : myObj.getJSONArray("field");
包含您的数据的完整示例:
String jsonString = "{\n" +
"\"expand\" : \"names\",\n" +
"\"customfield_1\" : null,\n" +
"\"customfield_2\" : [ { \"email\":\"123@gmail.com\"},{ \"email\":\"abc@gmail.com\"}]\n" +
"}";
JSONObject myObj = new JSONObject(jsonString);
JSONArray myArr1 = myObj.isNull("customfield_1") ? null : myObj.getJSONArray("customfield_1");
JSONArray myArr2 = myObj.isNull("customfield_2") ? null : myObj.getJSONArray("customfield_2");
System.out.println(myArr1);
System.out.println(myArr2);
输出:
null
[{"email":"123@gmail.com"},{"email":"abc@gmail.com"}]
推荐阅读
- event-sourcing - 如何查找实体所属的聚合?
- python - * 在 String.format 方法中使用时有什么作用?
- r - 如何使变量元素在r中的每个组内相互配对
- python-3.x - 在达到 None 值后继续对一组点进行 while 循环
- python-3.x - 使用 for 循环输出与星号相同数量的行
- java - 错误:无法找到或加载主类 ocpjp1.I_O_fundamentals.console.FormattedTable
- python - 如何将列更改为行
- javascript - for循环中表格的下一个和上一个按钮
- rust - 如何正确弃用 crate 功能
- php - 无法获取 phpMyAdmin 页面