Как десериализовать этот объект JSON? - PullRequest
0 голосов
/ 08 марта 2011
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 я получаю следующую ошибку:

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 правильно.

Edit: 2 импорт simplejson из urllib2 импорт urlopen из SimpleJSON импортировать грузы из django.core импортировать сериализаторы content = load (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 Ответ

1 голос
/ 08 марта 2011

Ваша ошибка не имеет ничего общего с json, в ней четко указано, что она не может импортировать DJANGO_SETTINGS, что означает, что у вас нет контекста приложения django.Самый простой способ сделать это - установить расширения django, которые предоставляют команду ./manage.py runscript, которая запускает ваш скрипт с контекстом приложения django.

Расширения Django можно найти здесь

Редактировать: : глядя на ваше второе редактирование, я вижу, что вы используете метод get_deserialize(), правильный метод должен быть deserialize(), AFAIK.

...