# 需要導入模塊: from simplejson import _speedups [as 別名]# 或者: from simplejson._speedups import scanstring [as 別名]def_import_c_scanstring():try:from simplejson._speedups import scanstringreturn scanstringexcept ImportError:returnNone# 需要導入模塊: from simplejson import _speedups [as 別名]# 或者: from simplejson._speedups import scanstring [as 別名]def_import_c_scanstring():try:raise ImportError # because assumes simplejson in pathfrom simplejson._speedups import scanstringreturn scanstringexcept ImportError:returnNone# 需要導入模塊: from simplejson import _speedups [as 別名]# 或者: from simplejson._speedups import scanstring [as 別名]def__init__(self, encoding=None, object_hook=None, parse_float=None,parse_int=None, parse_constant=None, strict=True,object_pairs_hook=None):"""*encoding* determines the encoding used to interpret any:class:`str` objects decoded by this instance (``'utf-8'`` bydefault). It has no effect when decoding :class:`unicode` objects.Note that currently only encodings that are a superset of ASCII work,strings of other encodings should be passed in as :class:`unicode`.*object_hook*, if specified, will be called with the result of everyJSON object decoded and its return value will be used in place of thegiven :class:`dict`. This can be used to provide customdeserializations (e.g. to support JSON-RPC class hinting).*object_pairs_hook* is an optional function that will be called withthe result of any object literal decode with an ordered list of pairs.The return value of *object_pairs_hook* will be used instead of the:class:`dict`. This feature can be used to implement custom decodersthat rely on the order that the key and value pairs are decoded (forexample, :func:`collections.OrderedDict` will remember the order ofinsertion). If *object_hook* is also defined, the *object_pairs_hook*takes priority.*parse_float*, if specified, will be called with the string of everyJSON float to be decoded. By default, this is equivalent to``float(num_str)``. This can be used to use another datatype or parserfor JSON floats (e.g. :class:`decimal.Decimal`).*parse_int*, if specified, will be called with the string of everyJSON int to be decoded. By default, this is equivalent to``int(num_str)``. This can be used to use another datatype or parserfor JSON integers (e.g. :class:`float`).*parse_constant*, if specified, will be called with one of thefollowing strings: ``'-Infinity'``, ``'Infinity'``, ``'NaN'``. Thiscan be used to raise an exception if invalid JSON numbers areencountered.*strict* controls the parser's behavior when it encounters aninvalid control character in a string. The default setting of``True`` means that unescaped control characters are parse errors, if``False`` then control characters will be allowed in strings."""self.encoding = encodingself.object_hook = object_hookself.object_pairs_hook = object_pairs_hookself.parse_float = parse_float orfloatself.parse_int = parse_int orintself.parse_constant = parse_constant or _CONSTANTS.__getitem__self.strict = strictself.parse_object = JSONObjectself.parse_array = JSONArrayself.parse_string = scanstring self.memo ={}self.scan_once = make_scanner(self)