跳转到主要内容

用于通过模式配置将类似JSON的对象流展平的工具

项目描述

https://img.shields.io/travis/scrapinghub/flatson.svg https://img.shields.io/pypi/v/flatson.svg

一个用于展平类似JSON对象的工具,允许通过注解的JSON模式进行配置

功能

  • 使用JSON模式展平Python字典

  • 支持通过模式进行字段配置

用法

>>> from flatson import Flatson
>>> schema = {
        "$schema": "https://json-schema.fullstack.org.cn/draft-04/schema",
        "type": "object",
        "properties": {
            "name": {"type": "string"},
            "age": {"type": "number"},
            "address": {
                "type": "object",
                "properties": {"city": {"type": "string"}, "street": {"type": "string"}}
            },
            "skills": {"type": "array", "items": {"type": "string"}}
        }
    }
>>> sample = {
            "name": "Claudio", "age": 42,
            "address": {"city": "Paris", "street": "Rue de Sevres"},
            "skills": ["hacking", "soccer"]}
>>> f = Flatson(schema)
>>> f.fieldnames
['address.city', 'address.street', 'age', 'name', 'skills']
>>> f.flatten(sample)
['Paris', 'Rue de Sevres', 42, 'Claudio', '["hacking","soccer"]']

您可以得到一个字段名顺序保持的字典

>>> f.flatten_dict(sample)
OrderedDict([('address.city', 'Paris'), ('address.street', 'Rue de Sevres'), ('age', 42), ('name', 'Claudio'), ('skills', '["hacking","soccer"]')])

您还可以通过模式配置数组序列化行为(默认为JSON)

>>> schema = {
        "$schema": "https://json-schema.fullstack.org.cn/draft-04/schema",
        "type": "object",
        "properties": {
            "name": {"type": "string"},
            "skills": {
                "type": "array",
                "items": {"type": "string"},
                "flatson_serialize": {"method": "join_values"},
            }
        }
    }
>>> f = Flatson(schema)
>>> f.flatten({"name": "Salazar", "skills": ["hacking", "socker", "partying"]})
['Salazar', 'hacking,socker,partying']

历史

0.1.0 (2015-06-02)

  • 首次发布到PyPI。

项目详情


下载文件

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

源代码分发

flatson-0.1.0.tar.gz (15.6 kB 查看哈希值)

上传时间: 源代码

构建分发

flatson-0.1.0-py2.py3-none-any.whl (5.8 kB 查看哈希值)

上传时间: Python 2 Python 3

支持