Цикл по JSON в шаблоне Selmer
Я делаю простую игру-викторину и хочу сохранить вопросы в файле JSON следующим образом:
{"questions":
[
{
"question":"2+2 ?",
"answer_A":1,
"answer_B":2,
"answer_C":3,
"answer_D":4,
"correct_answer":4
},
{
"question":"2+3?",
"answer_A":1,
"answer_B":2,
"answer_C":3,
"answer_D":5,
"correct_answer":5
}
] }
Это код для загрузки из файла:
defn json-page []
(layout/render
"json.html" {:file (parse-string (slurp "path/to/file"))}))
parse-string возвращает строку, поэтому я не могу зациклить ее для отображения каждого элемента. Как я могу это сделать? Я знаю синтаксис ({% for question in file %})
, но я не знаю, как получить доступ к вложенным элементам.
1 ответ
Решение
Спасибо Reddit за ответ:
(defn json-page []
(layout/render
"json.html" {:file (parse-string (slurp "path/to/file") true)}))
Ответ должен был добавить true в качестве параметра для parse-string
Ключевое слово карты JSON. После этого я могу перебрать JSON:
{% for question in file.questions %}
<p>{{ question.question }}.</p>
{{ question.answer_A}}
{{ question.answer_B}}
{{ question.answer_C}}
{{ question.answer_D}}
{% endfor %}