java - 如何在 JSONObject 中返回除“null”值之外的所有值?
问题描述
让我提供一些背景信息:
我有一个 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
, 一个,因为那个的值为空。
此 API 返回用户已链接到其帐户的社交媒体的 JSONObject,如果用户未添加值(如果不清楚),则返回 null。
我正在使用最新版本的org.json
库在 Java 17 中执行此操作。在此先感谢您的帮助,不胜感激!
解决方案
JSONObject socialMedias = new JSONObject(apiResponse).getJSONObject("socialMedias");
JSONArray socialMediaArray = socialMedias.toJSONArray(socialMedias.names());
socialMediaArray.toList().stream().filter(v -> v != null);
推荐阅读
- google-sheets - 查询给出错误的输出电子表格
- sql - 需要 SQL 在不同的列中查找具有重复值的记录
- c++ - C++ Windows 驱动程序 MSB3030 无法复制文件 '' 因为找不到
- javascript - 使用对象的 GraphQL 字段类型
- c - 在 C 中无法识别字符串
- symfony - 从数据库 symfony 加载时对象太大
- java - Liquibase 迁移不在不同的环境中运行
- sql - 使用 SQL 和 T-SQL 连接多个表
- java - 在垃圾收集器开始行动之前,我如何回收不再需要的对象?
- python-2.7 - 保存文件而不在 Python 中关闭它