diff --git a/scrapy/trunk/scrapy/contrib/web/json.py b/scrapy/trunk/scrapy/contrib/web/json.py index 2f0100836..1987b1dc9 100644 --- a/scrapy/trunk/scrapy/contrib/web/json.py +++ b/scrapy/trunk/scrapy/contrib/web/json.py @@ -1,26 +1,14 @@ from functools import wraps -from twisted.internet import defer + from scrapy.utils.defer import mustbe_deferred +from scrapy.utils.serialization import serialize as _serialize, unserialize as _unserialize from .http import HttpResponse - -JSONCALLBACK_RE = '^[a-zA-Z][a-zA-Z_.-]*$' JSON_CONTENT_TYPES = ('application/json',) - -def serialize(obj): - global _serialize - if not _serialize: - _loadserializers() - return _serialize(obj) - -def unserialize(obj): - global _unserialize - if not _unserialize: - _loadserializers() - return _unserialize(obj) - +serialize = lambda x: _serialize(x, 'json') +unserialize = lambda x: _unserialize(x, 'json') class JsonException(Exception): pass @@ -109,21 +97,3 @@ def _x_http_method_override(request): """ return request.HEADERS.get('x-http-method-override', request.method).upper() - -## json serializers - -_serialize = _unserialize = None -def _loadserializers(): - global _serialize, _unserialize - try: - import cjson - _serialize = cjson.encode - _unserialize = cjson.decode - except ImportError: - try: - import simplejson - _serialize = simplejson.dumps - _unserialize = simplejson.loads - except ImportError: - assert 0, 'json serialization needs cjson or simplejson modules' - diff --git a/scrapy/trunk/scrapy/contrib/web/service.py b/scrapy/trunk/scrapy/contrib/web/service.py index 6806c67e4..8db4cc1ac 100644 --- a/scrapy/trunk/scrapy/contrib/web/service.py +++ b/scrapy/trunk/scrapy/contrib/web/service.py @@ -1,6 +1,5 @@ import re import urllib -import simplejson import hashlib from twisted.internet import defer