我在freemarker模板中尝试了using both flexjson.JSONSerializer and com.fasterxml.jackson.databind.ObjectMapper,将通过csv数据加载器csv(menu.csv, {trimCells: true})加载的csv文件转换为JSON。
当我尝试运行它时,我得到了以下异常:
...
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,所以我假设它使用较新的接口来进行散列。
你知道怎么解决这个问题吗?
发布于 2021-06-29 18:06:19
CsvSequence同时实现了freemarker.template.TemplateHashModel和freemarker.template.TemplateSequenceModel,请参见http://fmpp.sourceforge.net/api/fmpp/models/CsvSequence.html
CsvSequence也是一个包含一个键的散列: headers。这是一个存储标头名称的序列
因为我只想转换序列,而不是头部,所以我可以简单地将CsvSequence转换为正常的序列,例如:
${JSON.stringify(csvInput[0..])}或
${JSON.stringify([] + csvInput)}https://stackoverflow.com/questions/68167795
复制相似问题