如何从嵌套数据结构(例如解析 JSON)中提取单个值?

2024-01-12

我编写了一些代码来从 Web API 获取数据。我能够从 API 解析 JSON 数据,但得到的结果看起来相当复杂。这是一个例子:

>>> my_json
{'name': 'ns1:timeSeriesResponseType', 'declaredType': 'org.cuahsi.waterml.TimeSeriesResponseType', 'scope': 'javax.xml.bind.JAXBElement$GlobalScope', 'value': {'queryInfo': {'creationTime': 1349724919000, 'queryURL': 'http://waterservices.usgs.gov/nwis/iv/', 'criteria': {'locationParam': '[ALL:103232434]', 'variableParam': '[00060, 00065]'}, 'note': [{'value': '[ALL:103232434]', 'title': 'filter:sites'}, {'value': '[mode=LATEST, modifiedSince=null]', 'title': 'filter:timeRange'}, {'value': 'sdas01', 'title': 'server'}]}}, 'nil': False, 'globalScope': True, 'typeSubstituted': False}

通过查看这些数据,我可以看到我想要的具体数据:1349724919000标记为的值'creationTime'.

如何编写直接获取该值的代码?

我不需要任何搜索逻辑来找到这个值。当我查看回复时,我可以看到我需要什么;我只需要知道如何将其转换为特定的代码以以硬编码的方式提取特定的值。我读了一些教程,所以我明白我需要使用[]访问嵌套列表和字典的元素;但我无法确切地弄清楚它如何适用于复杂的情况。

更一般地说,我如何找出数据的“路径”,并为其编写代码?


作为参考,让我们看看原始 JSON 是什么样子的,具有漂亮的格式:

>>> print(json.dumps(my_json, indent=4))
{
    "name": "ns1:timeSeriesResponseType",
    "declaredType": "org.cuahsi.waterml.TimeSeriesResponseType",
    "scope": "javax.xml.bind.JAXBElement$GlobalScope",
    "value": {
        "queryInfo": {
            "creationTime": 1349724919000,
            "queryURL": "http://waterservices.usgs.gov/nwis/iv/",
            "criteria": {
                "locationParam": "[ALL:103232434]",
                "variableParam": "[00060, 00065]"
            },
            "note": [
                {
                    "value": "[ALL:103232434]",
                    "title": "filter:sites"
                },
                {
                    "value": "[mode=LATEST, modifiedSince=null]",
                    "title": "filter:timeRange"
                },
                {
                    "value": "sdas01",
                    "title": "server"
                }
            ]
        }
    },
    "nil": false,
    "globalScope": true,
    "typeSubstituted": false
}

这让我们可以更清楚地看到数据的结构。

具体情况,首先我们要查看下对应的值'value'键入我们解析的数据。那是另一个命令;我们可以访问它的值'queryInfo'以同样的方式键入,并且类似地'creationTime'从那里。

为了获得所需的值,我们只需将这些访问依次进行:

my_json['value']['queryInfo']['creationTime'] # 1349724919000
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从嵌套数据结构(例如解析 JSON)中提取单个值? 的相关文章

随机推荐

  • 来自守护进程的错误响应:获取 https://registry-1.docker.io/v2/:拨打 tcp:查找registry-1.docker.io...i/o 超时

    我试图从 docker io 中提取图像 但收到此错误 最近我更改了 DNS 我不确定这就是原因 我执行了minikube ssh我执行了docker pull然后我得到了这个错误 Error response from daemon Ge
  • OpenLayers:如何计算两点之间的距离?

    如何使用墨卡托投影计算 OpenLayers 中两点之间的距离 Thanks use point1 distanceTo point2 var Geographic new OpenLayers Projection EPSG 4326 v
  • 将 INT 转换为 DATETIME (SQL)

    我正在尝试将日期转换为日期时间 但出现错误 我要转换的数据类型是 float null 我想将其转换为 DATETIME 该代码的第一行工作正常 但我在第二行收到此错误 将表达式转换为数据类型日期时间时出现算术溢出错误 CAST CAST
  • 是否可以在 Windows 上构建 ffmpeg x64?

    真正的答案可能是 不 但仍然需要仔细检查 有没有人能够在 Windows VS2013 或 VS2015 上构建 ffmpeg x64 我知道 如果不进行大量修改 公开可用的资源是不可能的 然而 如果有人做到了并且他愿意分享一些技巧 编辑
  • 使用 Flutter Firestore 插件,为文档中的每个子集合执行一些操作

    为了帮助我更好地了解 Flutter 和 Firebase 我正在制作一个列表共享应用程序 我正在处理列表主屏幕 该屏幕将显示可重新排序的列表图块视图 其中每个用户列表都有一个图块 我还没有开始研究这些列表内部的内容 我已经设置了 fire
  • 在 Ruby 中比较序列

    假设我必须 中小型 数组 tokens aaa ccc xxx bbb ccc yyy zzz template aaa bbb ccc 我怎样才能确定是否tokens包含所有条目template 按照同样的顺序 请注意 在上面的示例中 应
  • 无法多次重写 jQuery UI 自动完成 renderItem 方法

    它会在找到的第一个自动完成中正确覆盖 但对其余部分不执行任何操作 相反 它加载原始的 renderitem 方法 您可以在以下位置看到https github com jquery jquery ui blob master ui jque
  • 检查 Azure 资源组是否存在 - Azure Powershell

    我试图验证 ResourceGroup 是否存在 所以我认为以下代码应该返回 true 或 false 但它不输出任何内容 RSGtest Find AzureRmResource Format List ResourceGroupName
  • Rails 的 concat 方法和 do...end 块不起作用

    我刚刚读到 Rails 的concat清理在这里输出内容的助手的方法http thepugautomatic com 2013 06 helpers http thepugautomatic com 2013 06 helpers 我尝试了
  • 根据多个架构定义验证 XML 文件

    我正在尝试根据许多不同的模式验证 XML 文件 对人为的示例表示歉意 a xsd b xsd c xsd c xsd 特别是导入 b xsd 和 b xsd 导入 a xsd 使用
  • SQLiteDatabase close() 函数在多线程时导致 NullPointerException

    我在我的项目中发现 Android 上的 SQLiteDatabase 实现中的 close 函数在运行打开数据库 插入数据然后关闭数据库的多个线程时会引发 NullPointerException 一切都运行顺利 除非我允许每个线程在插入
  • 如何在 VBA (Excel 2010) 中将默认情况恢复为变量?

    在某些时候我不小心命名了一个变量range 全部小写 从那时起 Visual Basic for Applications 编辑器拒绝使用Range 帕斯卡大小写 它会自动将其更正为小写 我怎样才能重置它的 大脑 以忘记我过去的违规行为 注
  • ICS 文件内的超链接问题

    我创建了一个 ICS 文件 它有一个文本的超链接 在 Outlook 2013 中 它运行良好 但在其他电子邮件客户端中 它会向我显示完整的 URL 以及超链接文本 请参阅下面的屏幕截图 MAC OS 笔记本电脑 http img en25
  • 段落中每个单词的第一个字母的样式

    我正在尝试使用样式设置段落的第一个字母CSS并想使用 greensock 添加一些动画 但实际上要求是设置每个单词的第一个字母的样式 而不仅仅是第一个字母段落 对此有何建议 想法 p font size 150 color 000000 p
  • 根据url隐藏div

    抱歉 如果这是另一个转发 我一直在尝试寻找解决方案 但我尝试过的任何方法都不起作用 我正在使用一个我可以完全控制 html 的博客 我通常可以找到基本 html 的方法 但当涉及到 Java 或 CSS 时 我完全是个新手 抱歉 我什么都不
  • 获取程序图标

    我正在制作一个类似资源管理器的应用程序来浏览存储在我的计算机上的文件 我的应用程序将处于 图标 视图中 问题是 如何显示exe文件的图标 有几种方法可以做到这一点 最简单的可能是添加对System Drawing并利用Icon Extrac
  • 找不到 unicode 右箭头

    Unicode 中有这些箭头 但它缺少一个正确的 名字应该是这样的RIGHTWARDS BLACK ARROW 但没有该名称的 Unicode 字符 有一些字符看起来很相似 但我找不到合适的匹配项 我正在寻找该集合的右指向字符 基于字符名称
  • 使用 pip 安装 lxml 失败

    我正在尝试使用 pip 安装 lxml 我有 Windows 11 和 Python 版本 python 3 10 2 amd64 我也在使用 Visual Studio Code VSC 我意识到我需要 lxml 从我的 VSC 终端中的
  • 正则表达式/lastIndex - 意外行为

    我知道有一些正则表达式 lastIndex差异 但这对我来说是新的 预期行为 创建一个新的正则表达式 带有文字 构造函数 显然会创建一个带有lastIndex属性设置为零 实际行为 在 FF Chrome 中 lastIndex 属性似乎在
  • 如何从嵌套数据结构(例如解析 JSON)中提取单个值?

    我编写了一些代码来从 Web API 获取数据 我能够从 API 解析 JSON 数据 但得到的结果看起来相当复杂 这是一个例子 gt gt gt my json name ns1 timeSeriesResponseType declar