0

我正在使用 python-eve,我想在模式文件 (.json) 中添加一些注释。所以直到现在我尝试了不同的评论风格:

/*TYPE_OF_REFERENCE_MAPPING = {
    'ABST': 'Abstract',
    'ADVS': 'Audiovisual material',
    'AGGR': 'Aggregated Database',
    'ANCIENT': 'Ancient Text',
    'ART': 'Art Work',
    ...
}*/

//TYPE_OF_REFERENCE_MAPPING = {
//    'ABST': 'Abstract',
//    'ADVS': 'Audiovisual material',
//    'AGGR': 'Aggregated Database',
//    'ANCIENT': 'Ancient Text',
//    'ART': 'Art Work',
//    ...

#TYPE_OF_REFERENCE_MAPPING = {
#    'ABST': 'Abstract',
#    'ADVS': 'Audiovisual material',
#    'AGGR': 'Aggregated Database',
#    'ANCIENT': 'Ancient Text',
#    'ART': 'Art Work',
#    ...
#}

都产生错误:

/api/settings.py", line 25, in <module>
    cite_schema = json.load(f)
  File "/usr/lib/python2.7/json/__init__.py", line 290, in load
    **kw)
  File "/usr/lib/python2.7/json/__init__.py", line 338, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python2.7/json/decoder.py", line 369, in decode
    raise ValueError(errmsg("Extra data", s, end, len(s)))
ValueError: Extra data: line 233 column 1 - line 238 column 10 (char 3943 - 4111)
4

2 回答 2

1

问题是 json.load() 不支持评论。这里是完整的解决方案。

在我的 Eve 设置文件中:

import commentjson as json
...
annot_schema = json.load(f)
...
taxonannot_endopoint = {'resource_method': ['GET', 'POST'],
                        'item_methods': ['GET', 'PUT', 'PATCH'],
                        'schema': annot_schema}

现在我的模式文件接受注释行:

# comment
{
  "primary_title": {
          "type": "string",
          "required": true
          },
...
}
于 2016-11-01T18:59:37.747 回答
1

查看文档中的此示例是否有帮助:

# 'people' schema definition
'schema'= {
    'firstname': {
        'type': 'string',
        'minlength': 1,
        'maxlength': 10,
    },
    'lastname': {
        'type': 'string',
        'minlength': 1,
        'maxlength': 15,
        'required': True,
        'unique': True,
    },
    # 'role' is a list, and can only contain values from 'allowed'.
    'role': {
        'type': 'list',
        'allowed': ["author", "contributor", "copy"],
    },
    # An embedded 'strongly-typed' dictionary.
    'location': {
        'type': 'dict',
        'schema': {
            'address': {'type': 'string'},
            'city': {'type': 'string'}
        },
    },
    'born': {
        'type': 'datetime',
    },
}
于 2016-10-20T07:01:51.933 回答