首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在FreeMarker中序列化() fmpp CsvSequence?

如何在FreeMarker中序列化() fmpp CsvSequence?
EN

Stack Overflow用户
提问于 2021-06-29 01:36:15
回答 1查看 19关注 0票数 1

我在freemarker模板中尝试了using both flexjson.JSONSerializer and com.fasterxml.jackson.databind.ObjectMapper,将通过csv数据加载器csv(menu.csv, {trimCells: true})加载的csv文件转换为JSON。

当我尝试运行它时,我得到了以下异常:

代码语言:javascript
复制
...
Caused by: java.lang.UnsupportedOperationException: Operation supported only on TemplateHashModelEx. fmpp.models.CsvSequence does not implement it though.
    at freemarker.ext.beans.HashAdapter.getModelEx(HashAdapter.java:186)
    at freemarker.ext.beans.HashAdapter.access$000(HashAdapter.java:38)
    at freemarker.ext.beans.HashAdapter$1.iterator(HashAdapter.java:99)
    at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeFields(MapSerializer.java:696)
    ... 46 common frames omitted

我还不知道FreeMarker的任何内部结构,但在我看来,它很像CsvSequence does implement the freemarker.template.TemplateHashModel,但不像freemarker.template.TemplateHashModelEx

only place I found getModelEx is in the HashAdaptor,所以我假设它使用较新的接口来进行散列。

你知道怎么解决这个问题吗?

EN

回答 1

Stack Overflow用户

发布于 2021-06-29 18:06:19

CsvSequence同时实现了freemarker.template.TemplateHashModelfreemarker.template.TemplateSequenceModel,请参见http://fmpp.sourceforge.net/api/fmpp/models/CsvSequence.html

CsvSequence也是一个包含一个键的散列: headers。这是一个存储标头名称的序列

因为我只想转换序列,而不是头部,所以我可以简单地将CsvSequence转换为正常的序列,例如:

代码语言:javascript
复制
${JSON.stringify(csvInput[0..])}

代码语言:javascript
复制
${JSON.stringify([] + csvInput)}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68167795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档