You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python从JSON Path生成JSON对象?求通用实现方案

问题

我有一组JSON Path及其对应的值,例如bla.[0].ble对应值3,期望生成的JSON对象如下所示:

{
  "bla": [
    {
      "ble":  3
    }
  ]
}

之前我用jsonpath-ng库解析JSON中的路径,现在需要反向操作——从JSON Path构建JSON对象。请问怎么实现支持所有JSON Path的通用生成器?或者有没有合适的开源库可用?

解决方案

一、开源库推荐

直接用现成的库能省不少事,Python生态下有两个合适的工具:

  • jsonpath-rw-ext:作为jsonpath-rw的扩展,它既能用parse方法解析JSON Path,还提供update接口可以直接往空对象里按路径写入值,能覆盖数组索引、属性访问等大部分常见JSON Path语法。
  • pydash:这个库的set_方法支持用类似JSON Path的语法设置嵌套结构的值,比如执行pydash.set_({}, 'bla.[0].ble', 3)就能直接生成你需要的JSON对象,用法相当简洁。

二、手动实现思路(不依赖第三方库)

如果想自己实现通用生成器,核心是拆分JSON Path节点,逐步构建嵌套结构:

  1. 拆分路径节点:把JSON Path按.和[]拆分,比如bla.[0].ble拆成['bla', '0', 'ble'],注意区分普通属性名和数组索引。
  2. 迭代构建结构:从空对象开始,逐个处理每个节点:
    • 若当前节点是数组索引(如0),则创建数组,若索引超出当前数组长度,要补空占位确保位置存在。
    • 若当前节点是属性名,则创建对象的键值对。
    • 每处理完一个节点,就把操作上下文切换到新创建的结构中,继续处理下一个节点,直到最后一个节点时赋值对应的值。
  3. 处理特殊语法:如果要支持通配符*、切片[1:3]这类复杂语法,需要额外判断逻辑:通配符要给所有数组元素或对象属性赋值;切片要给对应范围的数组元素赋值,这部分逻辑相对繁琐,可根据实际需求逐步实现。

内容的提问来源于stack exchange,提问作者Andy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 18:45:34