Skip to main content

JSONObjects 允许您以声明方式指定如何从 JSON 文档中提取和转换元素。

项目描述

jsonobjects允许您以声明方式指定如何从 JSON 文档中提取和转换元素。

安装

我们推荐使用virtualenvpip。然后,您可以使用pip install -U jsonobjects。您可能还拥有setuptools,因此您可以使用easy_install -U jsonobjects。否则,您可以从GitHub下载源代码并运行python setup.py install

依赖项

所有依赖项都是可选的。

  • JMESPath允许高级查询(有关详细信息,请参阅JMESPath文档)。

  • dateutil允许 iso-8601 日期格式。

用法

解析软件项目的 iTunes 查找响应的架构示例:

import json
import requests
import jsonobjects as jo


class iTunesAppSchema(jo.Schema):
    id = jo.IntegerField('trackId')
    url = jo.Field('trackViewUrl')
    name = jo.StringField('trackName')
    currency = jo.StringField()
    price = jo.FloatField(min_value=0.0)
    rating = jo.FloatField('averageUserRating')
    reviews = jo.IntegerField('userRatingCountForCurrentVersion')
    version = jo.StringField()
    publisher_id = jo.IntegerField('artistId')
    publisher_url = jo.Field('artistViewUrl')
    publisher_name = jo.StringField('artistName')
    categories = jo.ListField('genres', child=jo.StringField())
    icon = jo.Field(
        ['artworkUrl512', 'artworkUrl60'], post_process=lambda v: {'url': v})
    screenshots = jo.ListField(
        'screenshotUrls', child=jo.Field(post_process=lambda v: {'url': v}))


parser = iTunesAppSchema('results[0]')


@parser.as_decorator
def get_app_details(app_id):
    url = 'https://itunes.apple.com/lookup?id={}'
    return requests.get(url.format(app_id)).json()

# https://itunes.apple.com/lookup?id=880047117
details = get_app_details(880047117)
print(details)

上面的代码产生下一个结果:

{
  "categories": ["Games", "Puzzle", "Action"],
  "currency": "USD",
  "icon": {"url": "http://is3.mzstatic.com/image/thumb/Purple3/v4/27/f0/d9/27f0d923-e00b-5f2c-a1e9-235ed3f83d14/source/512x512bb.jpg"},
  "id": 880047117,
  "name": "Angry Birds 2",
  "price": 0.0,
  "publisher_id": 298910979,
  "publisher_name": "Rovio Entertainment Ltd",
  "publisher_url": "https://itunes.apple.com/us/developer/rovio-entertainment-ltd/id298910979?uo=4",
  "rating": 4.0,
  "reviews": 4796,
  "screenshots": [
    {"url": "http://a4.mzstatic.com/us/r30/Purple3/v4/5c/5e/54/5c5e542c-54a1-7812-12df-045aca3ebb86/screen1136x1136.jpeg"},
    {"url": "http://a1.mzstatic.com/us/r30/Purple3/v4/95/50/db/9550dbba-9cbf-d588-fac4-5ebf04614023/screen1136x1136.jpeg"},
    {"url": "http://a5.mzstatic.com/us/r30/Purple3/v4/22/ef/e7/22efe7c2-bd05-6f58-f176-92e7230853bd/screen1136x1136.jpeg"},
    {"url": "http://a2.mzstatic.com/us/r30/Purple69/v4/72/44/ba/7244ba34-6c8c-5dc5-38e4-e134a97cd0d1/screen1136x1136.jpeg"},
    {"url": "http://a5.mzstatic.com/us/r30/Purple6/v4/1b/e4/98/1be49811-f5be-cb3f-1a31-a20b5f5663ee/screen1136x1136.jpeg"}
  ],
  "url": "https://itunes.apple.com/us/app/angry-birds-2/id880047117?mt=8&uo=4",
  "version": "2.2.1"
}

有关更多示例,请参见 tests.py。

测试

让测试运行如下所示:

# Install dependencies
$ pip install -r requirement.txt
# Run the test suites
$ python tests.py

执照

麻省理工学院许可证 (MIT)

马克西姆·卡缅科夫提供

项目详情


下载文件

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

源分布

jsonobjects-1.0.3.tar.gz (13.9 kB 查看哈希

已上传 source