Thymeleaf:当字段名称应包含破折号时,将对象列表转换为 JSON

Thymeleaf: convert a list of objects to JSON when fields' name should contains a dash

我有一个简单的 class 如下所示:

public class Item {
    private final String hcKey;
    private final int value;
    public Item(String hcKey, int value) {
        this.hcKey = hcKey;
        this.value = value;
    }
    public String getHcKey()
}

我创建了一个 List<Item> 并将其作为属性传递给 ThymeLeaf 模板以将数据输入 Highchart 地图:

 List<Item> items = Arrays.asList(new Item("xyz", 5), ... );
 model.addAttribute("entries", items);
 return "chart";

在我的 HTML 页面上,我有:

<script type="text/javascript" th:inline="javascript">
/*<![CDATA[*/
$(function () {
    var data = [[${entries}]];
    ...
});
/*]]>*/
</script>

请注意,如果我执行 MVC 服务,属性会正确扩展:

<script type="text/javascript" th:inline="javascript">
/*<![CDATA[*/
$(function () {
    var data = [{'hcKey':'xyz','value':5}, ... ];
    ...
});
/*]]>*/
</script>

最后,问题!

不幸的是,Highchairs 期望第一个字段的名称是 hc-key,但破折号不是 Java 中字段名称的有效字符。如何自动获取以下内容?

...
var data = [{'hc-key':'xyz','value':5}, ... ];
...           ^^^^^^

您可以在 JavaScript 中映射这些选项(键),例如:

var data = [[${entries}]].map(function(item) {
    item['hc-key'] = item.hcKey;
    return item;
});