2013-04-17 61 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

相關問題