检查 JSON 中是否存在子对象

2023-11-22

我正在使用以下命令检查 JSON 字符串中的对象是否存在:

JSONObject json = null;

         try {
            json = new JSONObject(myJsonString);
        } catch (JSONException e) { e.printStackTrace(); } 


        if(json.has("myObject")) System.out.println("EXISTS");

        else System.out.println("DOESN'T EXIST");

当我尝试检查子对象是否存在时出现问题。例如:

...,"queue":{"building":{"q0":{"id":177779,...

Queue总是存在并且building也,但是q0并不总是存在。那么,我如何检查是否存在q0?还有,有没有办法使用 Gson 库来检查它?

先感谢您!


您可以简单地尝试一下,如果尝试失败则返回 null。或者,您可以将尝试分解为小块,以监控失败的地方。

/**
 * This method will return the JSONObject q0, if it exists
 * If it doesn't exist it will return NULL
 *
 */
private JSONObject getQZero(JSONObject json)
{   
    try
    {
        return json.getJSONObject("queue").getJSONObject("building").getJSONObject("q0");
    }
    catch (JSONException e)
    {
        // This could be triggered either because there is no q0
        //   or because the JSON structure is different from what was expected.
        return null;
    }    
}

如果你想打印每个级别的日志,你也可以逐步进行;

/**
 * This method will show where your jsonparsing fails.
 * It will throw a JSONOException if the json is way different from what 
 *   was expected, and otherwise it will print a log of where the parsing
 *   failed.
 */
private JSONObject getQZero(JSONObject json) throws JSONException
{       
    // Stop if no queue
    if (! myObject.has("queue") 
    {
        Log.d(TAG, "no queue!");
        return null;
    }

    JSONObject queue = myObject.getJSONObject("queue");

    // Stop if no building
    if (! queue.has("building")
    {
        Log.d(TAG, "no building!");
        return null;
    }

    JSONObject building = queue.getJSONObject("building")

    // Stop if no q0
    if (! building.has("q0"))
    {
        Log.d(TAG, "no q0!");
        return null;
    }

    JSONObject q0 = building.getJSONObject("q0");
    // Q0 is returned here. If the method returned earlier, it returned NULL
    // You could also do nested ifs, but the indentation gets crazy
    return q0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检查 JSON 中是否存在子对象 的相关文章

  • 如何从Slog中查看日志

    如何查看 Slog API 生成的日志 是否有任何选项可以查看系统缓冲区中的日志 我的意思是查看我们使用的无线电缓冲区的日志 adb logcat b 无线电 而这个日志是由Android的Log类生成的 Slog API 的输出在哪里 怎
  • 与通用地图相比,MapView 的分辨率较差

    我刚刚收到 HTC Desire 进行测试 我注意到 残留在小于整个屏幕的框架中的地图视图不如通用地图应用程序那么清晰 有什么办法解决这个问题吗 您应该使用 API 级别 4 或更高级别编译应用程序 然后在 AndroidManifest
  • 构建应用程序时出现 BufferOverflowException

    每次我想运行我的 Android 应用程序时 我都会收到错误 2013 11 02 13 05 36 Dex Loader Unable to execute dex java nio BufferOverflowException Che
  • 在活动启动期间优雅地处理屏幕方向变化

    我正在尝试找到一种方法来正确处理设置活动 其中活动的方向是根据启动它的意图中的数据确定的 这是一款用户可以选择关卡的游戏 其中一些是纵向的 一些是横向的 我面临的问题是setRequestedOrientation ActivityInfo
  • Android 音乐播放器应用程序:如何为服务中运行的媒体播放器设置完整的侦听器?

    我正在编写一个音乐播放器应用程序 我在服务中有 MediaPlayer 对象 问题是 我不知道如何从服务更新用户界面 例如 我想更新当前歌曲的剩余时间 但是 因为 MediaPlayer 正在服务 我无法设置 MediaPlayer 对象的
  • 如何在 Laravel 5 中处理嵌套的 JSON 对象请求?

    我们在 Laravel 5 和 AngularJs Ionic 中运行此 Web 服务来处理 Web 当我们将请求从 Web 客户端 发送到 Web 服务 后端 时 我们传递了嵌套的 JSON 对象 我们在读取服务器端父对象下的所有子对象时
  • JSON 语法:传输数组

    A validJSON 语法是这样的 username admin password 123 但是如果我想传输一组 用户 给出的例子 而不是单个 用户 根据规范 下面的代码是有效的 JSON 吗 username admin passwor
  • 何时调用 glMatrixMode()

    我所关注的大多数 Android OpenGL ES 教程都有其 onSurfaceChanged 函数 如下所示 public void onSurfaceChanged GL10 gl int width int height gl g
  • 通过配置更改保留 CoroutineScope 的干净方法,无需 ViewModel

    我知道建议是在我们的 Activity 中使用 ViewModel 这样我们就可以使用它viewModelScope 由于 ViewModel 的寿命比 Activity 的寿命长 因此我们不必取消以下作业activity onDestro
  • 本地管理的广播接收器泄漏?

    当应用程序被系统杀死时 本地 即使用 LocalBroadcastManager 管理 BroadcastReceiver 是否有可能泄漏 我需要它的具体用例是我想在活动的 onCreate onDestroy 中注册 注销 Broadca
  • 使用 JNI 从 Java 代码中检索 String 值的内存泄漏

    我使用 GetStringUTFChars 从使用 JNI 的 java 代码中检索字符串的值 并使用 ReleaseStringUTFChars 释放该字符串 当代码在 JRE 1 4 上运行时 不会出现内存泄漏 但如果相同的代码在 JR
  • Android 5 Lollipop 阴影方向或 y 偏移

    是否有可能改变 Y 偏移的阴影方向 现在我有以下布局
  • Java字符串查找和替换的最佳方法?

    我正在寻找 Java 中字符串查找和替换的最佳方法 这是一句话 我的名字叫米兰 人们都知道我叫米兰瓦西奇 我想用 Milan Vasic 替换 Milan 弦 但在我已经有 Milan Vasic 的地方 情况不应该是这样 搜索 替换后的结
  • 如何加速 pandas 字符串函数?

    我正在使用 pandas 矢量化 str split 方法来提取从 上的拆分 返回的第一个元素 我还尝试使用 df apply 与 lambda 和 str split 来产生等效的结果 使用 timeit 时 我发现 df apply 的
  • onStart() 到底做了什么? - 安卓[重复]

    这个问题在这里已经有答案了 一段时间以来 我一直想知道 onStart 函数在 android 生命周期中的确切作用 网上的大多数资源只是说 它在您的活动在屏幕上可见之前被调用 但到目前为止我所做的应用程序我从未使用过onStart 我在
  • Android - 检测视图上的双击和三次点击

    我一直在尝试构建一个可以检测双敲击和三敲击的敲击检测器 在我的努力失败后 我在网上搜索了很长时间以找到可以使用的东西 但没有运气 奇怪的是 像这样的图书馆如此稀缺 有什么帮助吗 你可以尝试这样的事情 尽管我通常建议不要使用三次点击作为一种模
  • PHP 中的嵌套 JSON 输出

    我正在为 iOS 应用程序构建 API 并尝试将 mySQL 数据转换为 JSON 字符串进行处理 所需的输出将需要顶级订单详细信息 例如客户名称和地址 然后是订购的产品子数组 我需要的两个表中有相当多的字段 我希望拥有所有字段 我已经构建
  • 使用 PDFBox 在 Android 中创建 PDF

    我正在尝试通过我的 Android 应用程序创建 PDFPDFBoxapi 但出现以下错误 java lang NoClassDefFoundError org apache pdfbox pdmodel PDDocument 我已经将以下
  • android.view.WindowLeaked - 使用对话框和新意图时

    我已经尝试了 stackoverflow 上提供的所有可能的解决方案 但我仍然在 logcat 中遇到此错误 活动 com xyz MainActivity 泄露了最初在此处添加的窗口 com android internal policy
  • FCM(Firebase Cloud Messaging)如何发送到所有手机?

    我创建了一个小型应用程序 能够从 FCM 控制台接收推送通知 我现在想做的是向所有使用 API 安装应用程序的 Android 手机发送推送通知 这就是我完全迷失的地方 有没有办法在不收集所有注册ID的情况下将其发送到所有手机 这是否仅适用

随机推荐

  • 如何在 azure linux 托管的 Web 应用程序上运行 cronjobs?

    在 azure 上的 Linux Web 应用程序上找不到 Crontab 命令 我正在尝试为 Laravel 应用程序安排 cronjob 我正在尝试为我的 laravel web 应用程序运行一个 cronjob 在线解决方案建议我为此
  • R中如何合并两行?

    我想根据行名组合 求和两行 以在 R 中生成一行 最好的路线可能是创建一个新行并将两行求和在一起 示例 df A 1 3 4 6 B 3 2 7 9 C 6 8 1 2 D 3 2 8 9 其中 A B C D 是行名 我想将两行 A 和
  • Java XML:ClassCastException DeferredTextImpl

    这是我的代码 get the factory DocumentBuilderFactory dbf DocumentBuilderFactory newInstance try Using factory get an instance o
  • 从 MatPlotLib 画布获取二进制图像数据?

    我试图从 matplotlib 画布中获取二进制数据 以便将其附加到电子邮件中 但我发现这样做的唯一方法是说 filename image png canvas print figure filename with open filenam
  • 如何将该程序从 conio 移植到curses?

    我在 Windows 上编写了这个简单的程序 由于Windows有conio 所以它工作得很好 include
  • 将 Equinox OSGi 集成到 Apache Tomcat Web 应用程序中

    是否可以将 osgi equinox 引入到现有的 java Apache Tomcat 项目中 根据我的理解 OSGI 必须在某种 容器 内运行 我将如何整合它 我也在使用Jersey用于 RESTful 资源 您可能想看看这个问题 传统
  • Nginx、PHP + FPM 自定义错误页面

    我正在尝试创建一些自定义错误页面 但似乎无法让 500 页面正常工作 我有以下配置 server listen 80 root var www devsite index index php server name devsite erro
  • 如何将 Paypal 的 HH:MM:SS DD Mmm(.) YYYY PST/PDT 转换为 C# UTC 日期时间?

    我想在 SQL Server 数据库中以这种格式记录 payment date Update 直觉在这一点上是正确的 在这里找到了解决方案 http www codeillustrator com 2010 03 converting pa
  • 如何检测QWidget的关闭按钮被按下?

    我创建一个新的QWidget对象 我想知道何时按下关闭按钮 我尝试过以下代码 pWindow new QWidget connect pWindow SIGNAL triggered this SLOT processCloseButton
  • 如何在 Tensorflow Serving 中进行批处理?

    部署 Tensorflow Serving 并运行 Inception V3 测试 工作正常 现在 想要为 Inception V3 进行批处理 例如 希望发送 10 张图像 而不是一张 进行预测 怎么做 要更新哪些文件 inception
  • hadoop map减少二次排序

    谁能解释一下 hadoop 中的二次排序是如何工作的 为什么一定要使用GroupingComparator它在 hadoop 中是如何工作的 我正在浏览下面给出的链接 并对 groupcomapator 的工作原理产生疑问 谁能解释一下分组
  • java.sql.SQLException: ORA-00928: 缺少 SELECT 关键字。使用 JDBC 将记录插入数据库时

    当我尝试将一些行插入数据库时 出现错误 所以这是代码 try String insertStmt INSERT into MY TABLE RECORD TYPE FILE TYPE DATE BATCH NO RECORD COUNT V
  • 新的 C# 异步功能是否在编译器中严格实现

    作为一名对探索 事物如何工作 感兴趣的 C 程序员 我有兴趣更多地了解创造新事物的过程async特色工作 我关注了 Eric Lippert 关于异步的优秀文章系列 异步博客文章 我不记得在任何地方看到过任何关于此功能的实现 在高级别上 的
  • 动态改变CSS

    我需要确定哪个CSS应该应用于某些特定页面 我有一个包含子项和内容的母版页默认 aspx and 服务 aspx是母版页的子级 我想要的是当用户导航时默认 aspx or 服务 aspx 系统应适用默认CSS文件否则我想应用一些普通CSS
  • Apache 身份验证:失败时重定向,可靠吗?

    我已将 ErrorDocument 401 设置为指向我网站的帐户创建页面 但并非所有浏览器似乎都支持此重定向 Safari 此外 其他浏览器 Firefox Chrome 永远不会停止询问密码并显示 ErrorDocument 这导致大量
  • .lite 和 .tflite 格式之间有什么区别

    两者有什么区别 lite和 tflite格式 TensorFlow 格式 如果没有区别 为什么会有两个 除了问题之外 我似乎无法使用以下命令上传我的模型 liteFirebase ML 套件的扩展文件 原因可能是什么 ML 开发人员首先训练
  • 自动完成用户输入 PowerShell 2.0

    我有一个很大的数据列表 超过 1000 个不同的值 我希望用户能够从 PowerShell 控制台的列表中选择某些值 在控制台中允许用户快速选择值的最简单方法是什么 我想做一些诸如制表符补全或使用箭头键滚动值的功能 但我不确定如何执行这些操
  • Qt嵌入编译错误。修复“错误:没有这样的指令”错误

    我正在尝试使用安装在 home user Software 的 beagle 板的 angstrom 工具链来编译 qt 4 7 4 我收到的错误是 corelib arch qatomic arm h 131 错误 没有这样的指令 swp
  • jQuery 加载函数

    我使用以下脚本来调用 onload 函数 但它在 IE 中不起作用 body attr onload calFact 如果您使用 jQuery 您可以使用ready 函数如下 function callFact 或者更简单 只需将方法传递给
  • 检查 JSON 中是否存在子对象

    我正在使用以下命令检查 JSON 字符串中的对象是否存在 JSONObject json null try json new JSONObject myJsonString catch JSONException e e printStac