将json:api响应映射到对象属性的快速而肮脏的orm。

jsonapi-orm的Python项目详细描述


json:api orm

https://img.shields.io/pypi/v/jsonapi_orm.svgCircleCICoveralls githubDocumentation Status

将json:api响应映射到对象属性的快速而肮脏的orm。

如何

使用Requests或(如果您是受虐狂)python的内置urllib模块向json:api服务发出请求,然后从那里将响应传递给json:api orm。

所以,首先安装请求和这个库:

pip install requests
pip install jsonapi-orm

切换到您的python代码并使用魔法!

importrequestsfromjsonapi_ormimportresponse_to_obj# list of itemsr=requests.get('https://raw.githubusercontent.com/mislavcimpersak/jsonapi-orm/master/tests/responses/example_list.json')obj=response_to_obj(r.json())print('LIST OF ITEMS:')foriteminobj.data:print(item.title)# author is defined as a relationshipprint(item.author.twitter)# single itemr=requests.get('https://raw.githubusercontent.com/mislavcimpersak/jsonapi-orm/master/tests/responses/example_single.json')obj=response_to_obj(r.json())print('SINGLE ITEM')print(obj.data.title)# author is defined as a relationshipprint(obj.data.author.id)print(obj.data.author.twitter)

注意事项

  • 由于python对象属性名have certain rules喜欢不以数字开头或不包含“-”字符,因此可以使用.get()方法访问所有此类属性。即obj.data.author.get('first-name')
  • 如果在响应匹配的included部分中没有更详细地描述关系,则匹配将以静默方式失败。
  • 目前,这个lib并没有懒洋洋地遵循关系链接之类的东西。当然,您可以向给定的链接发出一个新请求,并将该响应传递给json:api orm。
  • 目前,还没有检查响应是否是有效的json:api响应。但当事情开始中断时,您可能会发现您正在尝试解析无效的响应。
  • 最后,这个库需要Python3.5或更新版本。

历史记录

0.1.8(2018-04-06)

  • 添加了测试配置和基本测试。

0.1.7(2018-03-25)

  • 在文档的FrontPage中使用readme.rst。

0.1.7(2018-03-25)

  • 固定管道安装。

0.1.6(2018-03-25)

  • pypi的自述文件修复。

0.1.5(2018-03-25)

  • pypi的自述文件修复。

0.1.4(2018-03-25)

  • 使用本报告中jsonapi.org中稍有修改的示例自述示例。

0.1.3(2018-03-25)

  • 当子数据不存在时修复错误。

0.1.2(2018-03-25)

  • 修复了响应中不存在包含的错误。

0.1.0(2018-03-24)

  • pypi上的第一个版本。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java匹配正则表达式并提取组oneliner   同步嵌套映射和集合(Java)   使用ApachePOI将结果集从Java数据库导出到Excel   java创建一个方法,其中变量是jTable   java如何创建带有嵌套循环的半菱形形状?   C/C++和Java的调试器   Java API中的生成器模式示例?   java代码分支应该应用什么样的单元测试组合?   如何求算法的时间复杂度   java如果我想代理所有服务调用,以便在不显式调用记录器的情况下正确记录它们,我有什么选择?   RabbitMQ java客户端到多个队列的连接   出现第一个空格之前的java掩码字符串   java使用子类对象修改其超类对象中的受保护属性   java如何使用PagerSlidingTabStrip删除选项卡?   java在禁用按钮后刷新整数值