gpt4 book ai didi

java - 仅当键存在时才向 ArrayList 添加数据

转载 作者:行者123 更新时间:2023-12-01 19:59:42 24 4
gpt4 key购买 nike

我想将 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。我可以只为该项目添加选项1吗?

最佳答案

只需为此编写一个方法:

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;
}

如果?之前的条件为true,则返回?后面表达式的结果,否则返回:.

之后的表达式

顺便说一句,类名(如 listItem)按照惯例应以大写字母开头(至少在 Java 中)

关于java - 仅当键存在时才向 ArrayList 添加数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59012094/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com