【发布时间】:2021-10-30 00:02:07
【问题描述】:
让我提供一些背景信息:
我有一个 org.json JSONObject,它包含这个 JSON 对象的所有值,取自 API。
"socialMedias" : {
"TWITTER" : "[twitter url]",
"YOUTUBE" : "[youtube url]",
"INSTAGRAM" : "[instagram url]",
"FACEBOOK" : null,
"VIMEO" : "[vimeo url]",
"LINKEDIN" : "[linkedin url]"
}
然而,在对 API 的这些调用之一中,只有一个值为 null,但相同的值并不总是为 null,并且可以有多个值为 null ;让我说明一下我的意思:
"socialMedias" : {
"TWITTER" : "[twitter url]",
"YOUTUBE" : null,
"INSTAGRAM" : null,
"FACEBOOK" : "[facebook url]",
"VIMEO" : "[vimeo url]",
"LINKEDIN" : "[linkedin url]"
}
以上是 API 可以返回的内容。另一个:
"socialMedias" : {
"TWITTER" : null,
"YOUTUBE" : null,
"INSTAGRAM" : null,
"FACEBOOK" : null,
"VIMEO" : null,
"LINKEDIN" : null
}
从字面上看,JSONObject 中的每个值都可以为空!
回到问题:
我如何能够检查 JSONObject 的哪些值为 null,并且只返回那些不为 null 的值;所以对于我拥有的第一个代码块,代码将返回TWITTER, YOUTUBE, INSTAGRAM, VIMEO 和LINKEDIN URL,并排除FACEBOOK,因为那个的值为null。
此 API 返回用户已链接到其帐户的社交媒体的 JSONObject,如果用户未添加值或不清楚,则将其设为 null。
我在 Java 17 中使用最新版本的 org.json 库来执行此操作。提前感谢您的帮助,不胜感激!
编辑:我猜我只是在这篇文章中没有使用我的大脑。 我现在意识到我可以遍历 socialMedias 对象中的每个值,然后将所有不为空的值添加到列表中......对不起!
【问题讨论】:
-
你为什么在乎?该对象的客户端(用户)仍然必须确定存在/存在哪些可能性。忽略空值有什么问题?听起来你是在为自己工作。
-
杰克逊很容易,
org.json我不确定你能做到。 -
@JimGarrison 我只想返回不为空的值;我正在使用 API 将消息返回到不同的服务器,如果有空值,该 API 将抛出一个合适的。 ://
-
@JoãoDias 从未使用过 Jackson,只使用过 org.json。此外,我在 org.json 中编写了大量的代码,更改所有内容需要几个月的时间。 ://
-
这可能是原始问题。我从未使用过
org.json,但在我看来,Jackson 更易于使用且更强大。例如参考stackoverflow.com/questions/42641301/…。
标签: java json maven org.json java-17