java - 仅当键存在时才将数据添加到 ArrayList
问题描述
我想将 JSON 数据添加到ArrayList
. JSON 数据不一致,所有对象都没有相同的键。这是示例:
{
"items": [
{
"title": "title 1",
"option1": "option 1",
"option2": "option 2",
"option3": "option 3",
"option4": "option 4"
},
{
"title": "title 2",
"option1": "option 1"
},
{
"title": "title 3",
"option1": "option 1",
"option2": "option 2"
}
]
}
问题:
我将所有键声明为空,如果它具有键值,则添加它,否则添加空值。但是我认为它可以以更好的方式完成,我不应该添加具有空值的键,如果它有值则应该添加键。
这是我的代码:
List<listItem> items = new ArrayList<>();
for (int i = 0; i < items.length(); i++) {
JSONObject item = items.getJSONObject(i);
String titleStr, optionStr1, optionStr2, optionStr3, optionStr4;
titleStr = optionStr1 = optionStr2 = optionStr3 = optionStr4 = null;
if ( item.has("title") ) {
titleStr = item.getString("title");
}
if ( item.has("option1") ) {
optionStr1 = item.getString("option1");
}
if ( item.has("option2") ) {
optionStr2 = item.getString("option2");
}
if ( item.has("option3") ) {
optionStr3 = item.getString("option3");
}
if ( item.has("option4") ) {
optionStr4 = item.getString("option4");
}
items.add(new listItem(
titleStr,
optionStr1,
optionStr2,
optionStr3,
optionStr4
));
}
编辑:为了清楚起见,我的问题是我是否需要在 ArrayList 中为不存在的键输入 NULL 值?或者我可以跳过这些键吗?
例如,第一项有 option1、option2、option3 和 option4,而第二项只有 option1,但在我的情况下,我仍然添加 option2=null、option3=null 和 option4=null。我可以只为这个项目添加 option1 吗?
解决方案
只需为此编写一个方法:
public String getIfNotNull(JSONObject item, String name){
return item.has(name)?item.getString(name):null;
}
并运行它
items.add(new listItem(
getIfNotNull("title"),
getIfNotNull("option1"),
getIfNotNull("option2"),
getIfNotNull("option3"),
getIfNotNull("option4")
));
运算符是以下形式的?
简写:
if(item.has(name)){
return item.getString(name);
}else{
return null;
}
如果条件在?
istrue
之前,它将返回 之后的表达式的?
结果,否则返回 之后的表达式的结果:
。
顺便说一句,listItem
按照约定,类名(如 )应以大写字母开头(至少在 Java 中)
推荐阅读
- android - android获取一定范围内的字母
- python - 为什么在 Python3 中使用 True 比使用 1 慢
- c# - asp.net 核心 3 和 identityserver4
- javascript - 如何修复'ReferenceError:没有定义你好'
- python - 属性少于父类的 Python 子类
- scala - spark:合并两个数据帧,如果两个数据帧中的ID重复,则df1中的行覆盖df2中的行
- css - 为什么 col-md-X 不在这个类列表中?
- php - Nginx:如何使用 PHP 访问根目录之外的文件?
- flutter - 颤振错误:W/IInputConnectionWrapper:非活动 InputConnection 上的 getExtractedText
- python - 如何在不删除文件的情况下将短语添加到文件中