Я запускаю запрос фильтра в Django, и мои результаты возврата выглядят следующим образом.Как преобразовать результаты поиска в Json serializable object в Django
search_result = [{'code': '12345', 'city': 'city1', 'country': 'USA', 'state': 'state1'}, {'code': '15675', 'city': 'city2', 'country': 'USA', 'state': 'state2'}]
Я сохранил эти возвращенные данные в словаре.
data_dict["return_result"] = search_result
data_dict["is_success"] = True
Теперь я возвращаю этот data_dict как JsonResponse. (BCZ этого URL был вызван с использованием AJAX).
JsonResponse(data_dict)
В этом процессе я получаю ниже ошибок -
[{'code': '12345', 'city': 'city1', 'country': 'USA', 'state': 'state1'}, {'code': '15675', 'city': 'city2', 'country': 'USA', 'state': 'state2'}] is not JSON serializable.
Вышеуказанных данных является НЕ допустимым Json из-за одинарные кавычки. Если все одинарные кавычки заменены двойными кавычками, то это действительный json.
Есть ли способ, я могу преобразовать его в действительный json или поисковый запрос возвращает действительный json.
Полный Трассировка стека:
Traceback (most recent call last):
File "/home/rana/DjangoProject/VirtualEnv/e/lib/python3.4/site-packages/django/core/handlers/base.py", line 149, in get_response
response = self.process_exception_by_middleware(e, request)
File "/home/rana/DjangoProject/VirtualEnv/e/lib/python3.4/site-packages/django/core/handlers/base.py", line 147, in get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/rana/DjangoProject/VirtualEnv/e/lib/python3.4/site-packages/django/contrib/auth/decorators.py", line 23, in _wrapped_view
return view_func(request, *args, **kwargs)
File "/home/rana/DjangoProject/Sanstha/sansthaonline/tenant/views/zip_city_search.py", line 37, in search_zip_city
return JsonResponse(context)
File "/home/rana/DjangoProject/VirtualEnv/e/lib/python3.4/site-packages/django/http/response.py", line 505, in __init__
data = json.dumps(data, cls=encoder, **json_dumps_params)
File "/usr/lib/python3.4/json/__init__.py", line 237, in dumps
**kw).encode(obj)
File "/usr/lib/python3.4/json/encoder.py", line 192, in encode
chunks = self.iterencode(o, _one_shot=True)
File "/usr/lib/python3.4/json/encoder.py", line 250, in iterencode
return _iterencode(o, 0)
File "/home/rana/DjangoProject/VirtualEnv/e/lib/python3.4/site-packages/django/core/serializers/json.py", line 115, in default
return super(DjangoJSONEncoder, self).default(o)
File "/usr/lib/python3.4/json/encoder.py", line 173, in default
raise TypeError(repr(o) + " is not JSON serializable")
TypeError: [{'city': 'city1', 'country': 'USA', 'code': '12345', 'state': 'state1'}, {'city': 'city2', 'country': 'USA', 'code': '15675', 'state': 'state2'}] is not JSON serializable
Возможный дубликат [не JSON сериализации] (http://stackoverflow.com/questions/16336271/is -not-json-serializable) – Selcuk
@Selcuk обновил вопрос. – User42
@Selcuk - согласно моему пониманию, запрос возвращает объект типа QuerySet, который не является Json Serializable, но конвертирует search_result, чтобы преобразовать результат в объект типа списка, который является Json Serializable. Пожалуйста, прокомментируйте, если мое понимание здесь неверно. – User42