bitbok
(Viktor Kliui)
28.Август.2017 15:31:52
#21
@rmerkushin , возникла одна проблемка, как мне подставить значение null (None) с помощью replace?
{'$phoneNumber': None}
TypeError: replace() argument must be str, not None
С помощью регулярок только?
json_file = re.sub(r'(\"\$)[\w]+\"', "null", json_file)
rmerkushin
(rmerkushin)
28.Август.2017 17:03:38
#22
в json не бывает None, вставляйте null
bitbok
(Viktor Kliui)
29.Август.2017 08:49:24
#23
Если мы добавляем None и делаем json.dumps - оно конвертит в null.
Вопрос в другом, я не могу передать None, ошибку вы видите выше. И я так же не можу передать null, могу только лишь “null”, но это же строка.
bitbok
(Viktor Kliui)
29.Август.2017 14:33:54
#24
Всем спасибо, сам спросил, потом решил. Вот как решил обыграть поставление null:
# Получаем и преобразуем JSON файл, согласно переданным параметрам
def make_data(json_name, data={}, default = False):
#Определяем откуда брать json файл
if default == False:
json_file = open('JSON_files/%s.json'%json_name).read()
else:
json_file = open('JSON_files/default_data/%s.json' % json_name).read()
#Если передали параметры для изменения, заменяем их
if len(data) > 0:
for key, val in iter(data.items()):
try:
json_file = json_file.replace(key, val)
# Возникает если передать None(null)
except TypeError: continue
# Вместо не переданных параметров подставляем null
json_file = re.sub(r'(\"\$[\w]+\")', "null", json_file)
return json_file
rmerkushin
(rmerkushin)
29.Август.2017 16:59:09
#25
Так вам и нужно предавать строку! Вы делаете замену в тексте, соответственно передав “null” оно в текст вставится без кавычек. А потом уже сериализуйте в json. Единственное, не забудьте в шаблоне убрать кавычки в том месте где замену делаете. А для случаев когда не null хотите вставить передавайте значение для замены вместе с кавычками, типа так: '"abc"'
.