Я создаю массив из JSON объектов, используя jsonfn , и отрисовываю их на объекте окна JavaScript.
[#assign json = []]
[#list articles as article]
[#assign json += [jsonfn.from(article).add("categories", "title", "@name").expand("categories").inline().print()]]
[/#list]
<script>
window.articles = [${json?join(",")}];
</script>
Пока действует, поле расширенных категорий (expand("categories")
) иногда содержит нулевые значения. Например:
{
"categories": [
{
"displayName": "Example Category",
"@name": "example-category"
},
null
],
"title": "Example Article",
"@name": "example-article"
}
Это требует от меня добавить instanceof Object
проверку при фильтрации в JavaScript, чтобы я не получил нулевую ошибку.
export const filterArticles = (selectedCategory, articles) => {
return articles.filter((article) => {
return article.categories.find((category) =>
category instanceof Object && category['@name'] === selectedCategory
);
});
};
Почему jsonfn.exp и иногда выводить нулевые значения? Почему нет нулевой проверки безопасности, чтобы избежать их включения в отображаемый вывод?