【发布时间】:2014-09-14 00:02:24
【问题描述】:
我使用 djangorestframework=2.3.14 和客户端使用 python requests=2.3.0 和 nap=1.0.1 创建了一个 REST API。客户端使用类似的方式将 JSON 数据发送到 API:
response = self.environment_detail_url.patch(data=json.dumps({'egg_list': finder.get_eggs_dict()}), headers={'content-type': 'application/json'})
在 REST API 视图中,我使用这个序列化器:
class EnvironmentSerializer(serializers.ModelSerializer):
egg_list = serializers.CharField(
widget=widgets.Textarea,
write_only=True,
required=True,
)
class Meta:
model = WebsiteEnvironment
fields = ('id', 'created', 'modified', 'name', 'url', 'egg_list')
我添加了一个方法“validate_egg_list”来验证发送的数据以执行一些工作。但是当我尝试加载 JSON 数据时,我收到了来自 json 的错误,例如:
ValueError: Expecting property name: line 1 column 1 (char 1)
确实 JSON 数据看起来像这样:
{
u'six': {
u'url': u'http://pypi.python.org/pypi/six/',
u'version': u'1.5.2'
},
u'pytz': {
u'url': u'http://pythonhosted.org/pytz',
u'version': u'2014.4'
}
}
所有字符串都以 unicode 符号 u'' 为前缀。
我在我的 API 和客户端中到处搜索,以查找我做错了什么,但我没有找到任何可能导致这种情况的地方。
有人知道吗?
谢谢。
【问题讨论】:
-
你能把
validate_egg_list的代码和你加载数据的代码贴出来吗? -
是的,你可以在它的仓库中看到它的代码:github.com/sveetch/Gestus/blob/master/gestus/rest/…
标签: json python-requests django-rest-framework