可配置且可记录的Json转换和映射
piri的Python项目详细描述
皮里
可配置的凡人数据映射
文档 (Stable| Latest)| Source Code| Task Tracker
皮里是什么
Piri是一个JSON到JSON的映射器。这意味着我们读取输入JSON并创建输出JSON。如何创建输出取决于配置文件中的说明。配置文件控制输出结构,并告诉piri在输入中的哪个位置查找数据,以及将数据放入输出的位置。此外,Piri还支持使用data casting
、if conditions
、combination of data from multiple places
以及设置default
值的数据转换。在
这使您能够将任何输入更改为所需的输出。
典型用例
- 您
GET
来自api的数据,但需要为后端系统转换数据 POST
将数据传输到需要与系统生成格式不同的数据的api- 你所有的后台都说不同的语言?通过Piri将其导入
- 客户提供奇怪格式的数据?使用Piri使其性感
- 但是JSON需要很好的CSV结构吗?将CSV生成一个JSON列表,并使用Piri对其进行转换
- 有XML但需要更改吗?将其转换为JSON,使用Piri将其转换为XML,然后再次将其转储为XML。在
- 客户旧系统需要CSV。使用Piri将结构良好的JSON数据转换为可以轻松转储到CSV的JSON列表
官方开放Piri解决方案
piri-cli,文件到文件映射的命令行接口。在
piri-web,一键部署用于Piri JSON映射的Web REST API。在
企业解决方案
来了。。。在
目标
这个库的目标是使JSON到JSON的转换/映射变得简单、可配置和可记录。我们通过使用一个简单但功能丰富的JSON配置来实现这一点,JSON配置还可以作为文档和双方之间的契约。在
为什么
皮里出生是因为我们真的不喜欢地图绘制。记录代码中所做的任何决定,以便产品所有者理解它也是no me gusto。将数据从一种格式转换成另一种格式是软件工程师每天最常做的事情。。。应该很容易!你不必担心记录下来。在
在经历了历史上最糟糕的POC之后,我们再也不想通过脚本和代码进行映射了。这就产生了这样一种想法:应该可以创建一个文件来管理结构的外观以及数据应该如何转换。这将是single source of truth
,通过Piri我们已经实现了这一点。在
我们相信这将使团队之间的协作更快更容易。使用Piri来协调前端和后端之间的数据格式。在第三方系统和后端之间。您甚至可以使用Piri来测试现有的集成;-)
特点
- 使用配置文件映射。在
- JSON Schema配置文件的验证。在
- 结构转换JSON
- 将多个值合并为一个。在
- 默认值
- If语句
- 是,包含,不是
- 铸造
- 整数、十进制、iso日期
贡献
请参见contribute
安装
包在pypi上。使用pip或诗歌安装
pip install piri^{pr2}$
简介
看看我们的入门课程here
快速启动
importsimplejsonfrompiri.processimportprocessmy_config={'name':'schema','array':False,'objects':[{'name':'invoices','array':True,'iterables':[{'alias':'invoices','path':['root','invoices'],},],'attributes':[{'name':'amount','mappings':[{'path':['invoices','amount'],},],'casting':{'to':'decimal','original_format':'integer_containing_decimals',},'default':0,},{'name':'debtor','mappings':[{'path':['root','customer','first_name'],},{'path':['root','customer','last_name'],},],'separator':' ',},],'objects':[],},],}example_data={'root':{'customer':{'first_name':'John','last_name':'Smith',},'invoices':[{'amount':10050,},{'amount':20050,},{'amount':-15005,},],},}mapped_data=process(example_data,my_config)withopen('resultfile.json','w')asoutput_file:output_file.write(simplejson.dumps(mapped_data))
内容结果文件.json在
{"invoices":[{"amount":100.5,"debtor":"John Smith"},{"amount":200.5,"debtor":"John Smith"},{"amount":-150.05,"debtor":"John Smith"}]}
- 项目
标签: