Я пытаюсь создать общий служебный класс, который создает тело шаблона электронной почты с двумя входами
- html шаблон с заполнителями (может иметь повторяющиеся записи)
- данные json
Ожидаемый результат - сгенерировать html-файл, объединяющий html-шаблон и jsondata. Поскольку я не знаю заранее все шаблоны или схему данных json, мне, возможно, придется использовать объект Dynamic / Expando или классы, связанные с синтаксическим анализом Json.
Вот пример Sample html
<ul id='products'>
{{ for product in products }}
<li>
<h2>{{ product.name }}</h2>
Price: {{ product.price }}
{{ product.description }}
</li>
{{ end }}
</ul>
Образец данных
{
"products": [
{
"name": "Ball",
"price": 788.0,
"description": "Matches Ball"
},
{
"name": "Bat",
"price": 2000.0,
"description": "Wooden Bat"
}
]
}
Я пробовал использовать https://github.com/lunet-io/scriban и https://www.nuget.org/packages/Newtonsoft.Json/, но не смог обойти проблемы. Я открыт для других предложений
public string RenderHtml(string templateHTML, string jsonData)
{
Scriban.Template template = Scriban.Template.Parse(templateHTML);
JObject jsonObject = JObject.Parse(jsonData);
return template.Render(jsonObject);
}