跳至主要内容

Python函数,用于将JSON对象扁平化为一个键值对字典,以及将该字典反扁平化为JSON对象。

项目描述

json-flatten

PyPI Changelog Tests License

Python函数,用于将JSON对象扁平化为一个键值对字典,以及将该字典反扁平化为JSON对象。

如果您需要使用常规HTML表单表示JSON对象或将其作为一组查询字符串参数传输,这可能会很有用。

例如

>>> import json_flatten
>>> json_flatten.flatten({"foo": {"bar": [1, True, None]}})
{'foo.bar.[0]$int': '1', 'foo.bar.[1]$bool': 'True', 'foo.bar.[2]$none': 'None'}
>>> json_flatten.unflatten(_)
{'foo': {'bar': [1, True, None]}}

传递给flatten()的顶层对象必须是一个字典。

JSON扁平化格式

基本原理

  1. 使用点表示法构建键以表示嵌套。
  2. 使用$type后缀保留类型信息。
  3. 使用[index]表示法表示列表索引。
  4. 空对象和列表有特殊表示。

嵌套对象

对于嵌套对象,通过点连接嵌套键来构建键。

示例

{
  "user": {
    "name": "John",
    "age": 30
  }
}

扁平化

user.name=John
user.age$int=30

列表

使用[index]表示法表示列表项。

示例

{
  "fruits": [
    "apple",
    "banana",
    "cherry"
  ]
}

扁平化

fruits.[0]=apple
fruits.[1]=banana
fruits.[2]=cherry

嵌套列表

对于嵌套列表,重复索引表示法。

示例

{"matrix": [[1, 2], [3, 4]]}

扁平化

matrix.[0].[0]$int=1
matrix.[0].[1]$int=2
matrix.[1].[0]$int=3
matrix.[1].[1]$int=4

类型保留

使用$type后缀保留类型。

类型 后缀 示例
字符串 name=Cleo
整数 $int age$int=30
浮点数 浮点数 价格$float=19.99
布尔值 $bool active$bool=True
空值 $none data$none=None
空对象 $empty obj$empty={}
空列表 $emptylist list$emptylist=[]

字符串值不需要类型后缀。

示例

JSON

{
  "user": {
    "name": "Alice",
    "age": 28,
    "hobbies": [
      "reading",
      "swimming"
    ],
    "address": {
      "street": "123 Main St",
      "city": "Anytown"
    },
    "active": true,
    "salary": 50000.5,
    "spouse": null
  }
}

扁平化

user.name=Alice
user.age$int=28
user.hobbies.[0]=reading
user.hobbies.[1]=swimming
user.address.street=123 Main St
user.address.city=Anytown
user.active$bool=True
user.salary$float=50000.5
user.spouse$none=None

项目详情


下载文件

下载您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

json_flatten-0.3.1.tar.gz (8.3 kB 查看哈希)

上传时间

构建分发

json_flatten-0.3.1-py3-none-any.whl (8.5 kB 查看哈希)

上传时间 Python 3

由以下组织支持