我如何 return 除了 JSONObject 中的 "null" 之外的所有值?

How can I return all the values except for a "null" one in a JSONObject?

让我提供一些背景信息:

我有一个 org.json JSON 对象,它具有这个 JSON 对象的所有值,取自 API.

"socialMedias" : {
    "TWITTER" : "[twitter url]",
    "YOUTUBE" : "[youtube url]",
    "INSTAGRAM" : "[instagram url]",
    "FACEBOOK" : null,
    "VIMEO" : "[vimeo url]",
    "LINKEDIN" : "[linkedin url]"
}

然而,尽管在对 API 的这些调用之一中,只有一个值为 null,但相同的值并不总是 null,并且可以有更多比一个空值;让我说明一下我的意思:

"socialMedias" : {
    "TWITTER" : "[twitter url]",
    "YOUTUBE" : null,
    "INSTAGRAM" : null,
    "FACEBOOK" : "[facebook url]",
    "VIMEO" : "[vimeo url]",
    "LINKEDIN" : "[linkedin url]"
}

以上是 API 可以 return 的内容。另一个:

"socialMedias" : {
    "TWITTER" : null,
    "YOUTUBE" : null,
    "INSTAGRAM" : null,
    "FACEBOOK" : null,
    "VIMEO" : null,
    "LINKEDIN" : null
}

从字面上看,JSON对象中的每个值都可以为空!

回到问题: 我如何能够检查 JSONObject 的哪些值是空的,并且只有 return 那些不是空的;因此,对于我拥有的第一个代码块,代码将 return TWITTER, YOUTUBE, INSTAGRAM, VIMEOLINKEDIN URL,并排除 FACEBOOK,因为那个的值为 null .

此 API return 是用户已链接到其帐户的社交媒体的 JSON 对象,如果用户未添加值,则为 null,如果不清楚。

我在 Java 17 中使用最新版本的 org.json 库执行此操作。在此先感谢您的帮助,非常感谢!

编辑:我猜我只是没有在这个 post 中动脑筋。 我现在意识到我可以循环遍历 socialMedias 对象中的每个值,然后将所有不为空的值添加到列表中...抱歉!

    JSONObject socialMedias = new JSONObject(apiResponse).getJSONObject("socialMedias");
    JSONArray socialMediaArray = socialMedias.toJSONArray(socialMedias.names());
    socialMediaArray.toList().stream().filter(v -> v != null);