2011-03-08 29 views
0
import simplejson 
from urllib2 import urlopen 
from simplejson import loads 
from django.core import serializers 
content = loads(urlopen('https://graph.facebook.com/1234676502/feed').read()) 
content = simplejson.dumps(content,sort_keys=True, indent=4) 
print content 
json_serializer = serializers.get_serializer("json")() 
json_serializer.deserialize(content) 

在運行上面的Python代碼即時得到以下錯誤:如何反序列化這個JSON對象?

Traceback (most recent call last): 
    File "/var/www/youedo/test.py", line 22, in <module> 
    json_serializer = serializers.get_serializer("json")() 
    File "/usr/local/lib/python2.6/dist-packages/django/core/serializers/__init__.py", line 63, in get_serializer 
    _load_serializers() 
    File "/usr/local/lib/python2.6/dist-packages/django/core/serializers/__init__.py", line 109, in _load_serializers 
    register_serializer(format, BUILTIN_SERIALIZERS[format], serializers) 
    File "/usr/local/lib/python2.6/dist-packages/django/core/serializers/__init__.py", line 51, in register_serializer 
    module = importlib.import_module(serializer_module) 
    File "/usr/local/lib/python2.6/dist-packages/django/utils/importlib.py", line 35, in import_module 
    __import__(name) 
    File "/usr/local/lib/python2.6/dist-packages/django/core/serializers/xml_serializer.py", line 6, in <module> 
    from django.core.serializers import base 
    File "/usr/local/lib/python2.6/dist-packages/django/core/serializers/base.py", line 7, in <module> 
    from django.db import models 
    File "/usr/local/lib/python2.6/dist-packages/django/db/__init__.py", line 14, in <module> 
    if not settings.DATABASES: 
    File "/usr/local/lib/python2.6/dist-packages/django/utils/functional.py", line 276, in __getattr__ 
    self._setup() 
    File "/usr/local/lib/python2.6/dist-packages/django/conf/__init__.py", line 38, in _setup 
    raise ImportError("Settings cannot be imported, because environment variable %s is undefined." % ENVIRONMENT_VARIABLE) 
ImportError: Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined. 

...當我打印的內容是正確打印JSON字符串。

編輯:2 進口simplejson 從進口的urllib2的urlopen 從simplejson進口負載 從django.core進口串行 含量=負載(的urlopen('https://graph.facebook.com/1234676502/feed 「).read())

json_serializer = serializers.get_serializer("json")() 
json_serializer.get_deserialize(content) 

我把這個代碼在我view.py然後我得到了以下錯誤:

AttributeError at /rss 

'Serializer' object has no attribute 'get_deserialize' 

Request Method:  GET 
Request URL: http://127.0.0.1:8000/rss 
Django Version:  1.2.4 
Exception Type:  AttributeError 
Exception Value:  

'Serializer' object has no attribute 'get_deserialize' 

回答

1

你的錯誤與json本身沒有任何關係,它明確指出它不能導入DJANGO_SETTINGS這意味着你沒有django app context。最簡單的方法是安裝django擴展程序,它提供了命令./manage.py runscript,它用django應用程序上下文運行腳本。

Django extensions can be found here

編輯::看你的第二個編輯,我可以看到你正在使用的方法get_deserialize(),正確的方法應該是deserialize(),據我所知。

+0

我改變了它,然後我得到這個錯誤「type object'Serializer'has no attribute'deserialize'」 – Prem