2013-04-17 58 views
1

我试图捕捉到从Amazon FPS,它也有两个形式的支付结果的信息:序列化/反序列化给AttributeError的:“统一”对象有没有属性“读”

  • 用户重定向到源服务器与GET和查询字符串参数
  • 亚马逊发送POST到源服务器相匹配的参数

我不能保证哪个请求首先到达服务器,所以我存储在数据库第一通过序列化request.GETrequest.POST使用json.dumps,然后尝试以后加载它使用json.loads用于与其他请求比较:

初始请求:

type = request.META['REQUEST_METHOD'] 
sub_req = SubscriptionRequest() 
params = getattr(request, type) 
serialized_params = json.dumps(params) 
if type == 'GET': sub_req.client_params = serialized_params 
if type == 'POST': sub_req.server_params = serialized_params 
sub_req.save() 

跟进请求:

stored_params = json.load(sub_req.server_params if type == "GET" else sub_req.client_params) 

错误:

File "/var/www/test.com/htdocs/apps/subscription/services.py", line 147, in subscription_request_check_or_store 
    stored_params = json.load(sub_req.server_params if type == "GET" else sub_req.client_params) 
    File "/usr/lib/python2.7/json/__init__.py", line 274, in load 
    return loads(fp.read(), 
AttributeError: 'unicode' object has no attribute 'read' 

回答

7

Json.load()rea ds从一个文件。使用json.loads()来解析一个字符串。

+0

D'oh!我刚读了另一个问题,看了看我的代码,并认为我看到了's'!一定是想象的东西:S。谢谢:) – DanH

+0

@DanH - 你是连续出现['s'问题]的第二个问题(http://stackoverflow.com/questions/16050713/module-object-has-no-attribute-gridspec-despite-主叫helpgridspec-REV)。一定是水中的东西。 – tdelaney

相关问题