#python #json
#python #json
Вопрос:
Я хочу иметь немного другой файл JSON для разных сред.
Если я создам файл шаблона с какими-то переменными, которые затем будут заменены на основе переменных среды, каков самый простой способ реализовать это?
Я искал библиотеку python для создания шаблонов, и это неизбежно приводит к шаблонам HTML. Будет ли какой-либо из них работать с файлом json?
Я мог бы использовать json.load
, а затем писать с json.dumps
помощью, но как я буду выполнять замены?
Эта задача также может быть реализована в bash вместо python.
Файл содержит документацию swagger.
Ответ №1:
Все, что вам нужно, это заполнители, затем откройте файл, вызовите .replace
несколько раз (или используйте re.sub
с функцией), а затем используйте json.loads
с сгенерированной строкой.
test.json
{"param": "<param placeholder>"}
Затем
import json
with open('test.json') as f:
template_json = f.read()
after_replace = template_json.replace('<param placeholder>', 'param value')
print(json.loads(after_replace))
выводит
{'param': 'param value'}
Использование re.sub
с функцией и dict:
test.json
{
"param1": "<param1 placeholder>",
"param2": "<param2 placeholder>",
"param3": "<param3 placeholder>"
}
Затем
import json
import re
with open('test.json') as f:
template_json = f.read()
values = {
'param1': 'param1 value',
'param2': 'param2 value',
'param3': 'param3 value'
}
after_replace = re.sub('<(. ?) placeholder>', lambda match: values.get(match.group(1)), template_json)
print(json.loads(after_replace))
выводит
{'param1': 'param1 value', 'param2': 'param2 value', 'param3': 'param3 value'}