使用 JSONPath 解析 JSON 属性内的 JSON

2024-05-10

我有一个 JSON 列表,其中每个元素的属性之一恰好是 JSON 本身。它来自于糟糕的前期设计,但事实就是如此。

我想查询元素中包含的 JSON 字符串内的不同属性。

这是一个例子,只有一项。我手写了代码,但相信我,通过生成它的方式,它在生产中是有效的 JSON

[{
  "extraData": "{\"foo\":\"bar\"}"
}]

我想查询类似的东西$.*.extraData.foo,但显然这样的语法不起作用。 我正在使用 IntelliJ IDEA Jsonpath 评估器。

语法应该是这样的parse($.*.extraData).*.foo

本文 https://docs.oracle.com/cd/E60058_01/PDF/8.0.8.x/8.0.8.0.0/PMF_HTML/JsonPath_Expressions.htm建议我没有这样的运算符可用于解析 JSON 中的 JSON

It has仅用于数据分析目的的 JSONPath。在Java中,我使用Jackson来解析extraData对象作为JsonNode,但我的目标是探索大型数据集,也许获得一些我想要用于枚举目的的不同值。


对于 JSON Path 来说,嵌入的 JSON 只是一个字符串。对于单个操作,您可以做的最好的事情是在表达式选择器中使用 RegEx,但是让 RegEx 识别 JSON 确实很棘手,而且前提是您的实现支持 RegEx。

我认为最好的选择是使用两条路径:

  1. 第一个路径获取嵌入的 JSON。$.*.extraData
  2. 解析该值
  3. 第二部分获取您需要的数据。$.foo

这需要一些额外的代码,但我认为这是你唯一现实的选择。

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

使用 JSONPath 解析 JSON 属性内的 JSON 的相关文章

随机推荐

  • umbraco 适用于单声道吗?

    我想跑Umbraco http umbraco org 在单声道上 这可能吗 目前 Umbraco 无法在 Mono 上正常运行 但人们已经在努力实现这一目标 This http kevinfitzgerald net articles u
  • 即使获得平台签名也无法读取系统文件

    我已经构建了一个自定义 Android ROM 我已经使用平台签名签署了我的应用程序并添加了android sharedUserId android uid system 在清单文件中 我的应用程序被授予所有 签名 和 系统 级别权限 但不
  • 如何在 AppEngine (GAE) 中进行数据库锁定?

    在 GAE 中 我有一个充满 一次性 的表 诸如 最后使用的序列号 之类的东西 这些东西并不真正属于其他表 它是一个简单的字符串键和字符串值对 我有一些代码来获取命名整数并递增它 如下所示 PersistenceCapable detach
  • 从 firebase 检索用户个人资料数据并显示

    我使用以下代码在 firebase 中创建用户配置文件 username string msgnumber number level number constructor private fire AngularFireAuth priva
  • 如何在 ncurses 中隐藏光标?

    我在写信ncursesC 和 C 程序 我还没有找到向用户隐藏光标的方法 我在互联网上查了一下 但我发现的大多数信息要么涉及 n curses 的 Python Ruby 实现 要么实际上并不涉及光标的隐藏 我怎样才能实现我的目标 你需要c
  • 如何在 React Native 中调试 WebView

    我们正在使用 React Native WebView 当我们在 ios 中运行应用程序时 应用程序正在运行 并且 webview 也正在加载给定的 URL html 中有一些问题 我想调试它 我无法调试它 任何有关相同的想法 参考都会有帮
  • JSLint 错误:意外的“这个”

    无法理解为什么 JSLint 对我的使用感到惊讶this在下面的代码中 function testConstr x use strict this joker Whyyy sooo seriousss this x x 对于这两个属性分配
  • 检查数据库中是否存在记录

    我正在使用这些代码行来检查记录是否存在 SqlCommand check User Name new SqlCommand SELECT FROM Table WHERE user txtBox UserName Text conn int
  • java JFileChooser 文件大小过滤器

    我知道我可以按文件类型进行过滤 但是可以按文件大小进行过滤吗 例如 JFileChooser 仅显示 3 MB 以内的图片 简短的回答应该是 你尝试过什么 长答案是肯定的 JFileChooser fc new JFileChooser f
  • 在 MATLAB 中定义其他中缀运算符

    有没有办法在 MATLAB 中定义额外的中缀运算符 具体来说 我想定义两个中缀运算符 gt and lt gt 这些符号是理想的 但如果需要 它可以是单个字符 它调用函数implies and iff以同样的方式 calls and and
  • 为什么在排序输入上插入到树中比随机输入更快?

    现在我一直听说从随机选择的数据构建二叉搜索树比有序数据更快 这仅仅是因为有序数据需要显式重新平衡以将树高度保持在最低限度 最近我实现了一个不可变的treap http en wikipedia org wiki Treap 一种特殊的二叉搜
  • 将样式应用于警报对话框

    我决定尝试材质警报dialogs https material io develop android components dialog 在安卓上 我遇到的问题是当我尝试应用某些样式时 检查文档 我发现了这个
  • Android Studio 主密码存储在哪里?

    当您在 Android Studio 中生成 APK 时 您可以使用主密码来保护生成过程 该密码存储在文件系统中的哪个位置 我希望我没有在我的项目中提交这个文件 即上传到 Github 主密码实际上并未存储 但它用于加密主密码文件 该文件位
  • 使用 RSpec 请求规范授权请求时,access_token 无效

    我正在尝试测试CredentialsController 使用 RSpec 请求规范在生产中运行良好 Code 控制器 class CredentialsController lt ApplicationController before
  • Android 设备 ID(不是 IMEI)

    我使用命令 adb devices 列出连接的设备 在我的电脑上我得到 附加设备列表 HT9CTP820988 器件 我的问题是 如何以编程方式获取此 id HT9CTP820988 你所看到的adb devices命令是序列号 序列号 创
  • 如何替换 Jekyll 中最后一个

    标签

    在我的index html 页面中 我想在post excerpt 之后附加 理想化的方式是使用代码 post excerpt replace last 但是过滤器replace last似乎没有定义 那么我怎样才能在 jekyll 中做到
  • 使用 Python 解析 XML,解析外部 ENTITY 引用

    在我的 S1000D xml 中 它指定了一个带有对公共 URL 的引用的 DOCTYPE 该 URL 包含对包含所有有效字符实体的许多其他文件的引用 我使用 xml etree ElementTree 和 lxml 尝试解析它并得到解析错
  • 为什么模板类的静态成员不唯一

    看一下下面的代码 include
  • 使用reduce方法的斐波那契数列

    于是 我看到有人用reduce方法来计算斐波那契数列 这是他的想法 1 0 1 1 2 1 3 2 5 3 对应于 1 1 2 3 5 8 13 21 代码如下所示 def fib reduce n initial 1 0 dummy ra
  • 使用 JSONPath 解析 JSON 属性内的 JSON

    我有一个 JSON 列表 其中每个元素的属性之一恰好是 JSON 本身 它来自于糟糕的前期设计 但事实就是如此 我想查询元素中包含的 JSON 字符串内的不同属性 这是一个例子 只有一项 我手写了代码 但相信我 通过生成它的方式 它在生产中