+: SQL-сервер иногда оптимизирует код
+: Вы вынуждены передать параметры, который ограничивает проблемы Внедрения SQL
-: Ваш код зависит от единой базы данных (некоторые dbs даже не имеют SP)
-: Для изменения кода, необходимо соединиться с базой данных
-: Логика не организована хорошо
Лично, я против нее, но я должен был использовать ее однажды на действительно занятом веб-сайте. Используя SP в MS SQL дал огромные преимущества, но после того как я реализовал кэширование тех преимуществ, больше не были настолько большими.
Правильный json:
r'{"FileExists": true, "Version": "4.3.2.1", "Path": "\\\\host\\dir\\file.exe"}'
Обратите внимание на букву r
, если вы ее опустите, вам нужно экранировать \
и для Python.
>>> import json
>>> d = json.loads(s)
>>> d.keys()
[u'FileExists', u'Path', u'Version']
>>> d.values()
[True, u'\\\\host\\dir\\file.exe', u'4.3.2.1']
Обратите внимание на разницу:
>>> repr(d[u'Path'])
"u'\\\\\\\\host\\\\dir\\\\file.exe'"
>>> str(d[u'Path'])
'\\\\host\\dir\\file.exe'
>>> print d[u'Path']
\\host\dir\file.exe
Python REPL по умолчанию печатает repr (obj)
для объекта obj
:
>>> class A:
... __str__ = lambda self: "str"
... __repr__ = lambda self: "repr"
...
>>> A()
repr
>>> print A()
str
Следовательно, ваша исходная строка s
не правильно экранирован для JSON. Он содержит неэкранированные '\ d'
и '\ f'
. print s
должен отображать '\\ d'
, в противном случае это неправильный JSON.
ПРИМЕЧАНИЕ. Строка JSON представляет собой набор из нуля или более символов Unicode, заключенных в двойные кавычки, с использованием escape-символов обратной косой черты ( json.org ). В приведенных выше примерах я пропустил вопросы кодирования (а именно, преобразование байтовых строк в Unicode и наоборот).
>>> s
'{"FileExists": true, "Version": "4.3.2.1", "Path": "\\\\host\\dir\\file.exe"}'
>>> print s
{"FileExists": true, "Version": "4.3.2.1", "Path": "\\host\dir\file.exe"}
Фактически вы не сбежали строка, поэтому она пытается проанализировать недопустимые escape-коды, такие как \ d
или \ f
. Подумайте об использовании хорошо протестированного кодировщика JSON, например json2.js .