首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >FTL eval_json失败

FTL eval_json失败
EN

Stack Overflow用户
提问于 2021-08-04 06:30:04
回答 1查看 92关注 0票数 1

当我试图在FTL中解析JSON下面的内容时

代码语言:javascript
运行
复制
{
  "success":true,
  "timestamp":1627886463,
  "base":"Data1",
  "date":"2021-08-02",
  "values":{
    "data2":7.5,
    "data3":44,
    "data4":33
  }
}

FTL低于1

代码语言:javascript
运行
复制
<#assign vals = jsonData?eval_json>

它失败了。

有什么建议吗?

按照要求,下面是完整的java代码。

代码语言:javascript
运行
复制
public static void main(String[] args) throws Throwable{
        Configuration cfg = new Configuration(new Version("2.3.31"));
        StringTemplateLoader stringLoader = new StringTemplateLoader();
        cfg.setTemplateLoader(stringLoader);
        StringBuilder sb = new StringBuilder();
        sb.append("<#assign vals = '{  \"success\":true,  \"timestamp\":1627886463,  \"base\":\"Data1\",  \"date\":\"2021-08-02\",  \"values\":{    \"data2\":7.5,    \"data3\":44,    \"data4\":33  }}'?eval_json>");
        sb.append("${vals}");
        stringLoader.putTemplate("sample", sb.toString());
        Map<String, Object> input = new HashMap<String, Object>();
        Template template = cfg.getTemplate("sample");
        Writer consoleWriter = new OutputStreamWriter(System.out);
        template.process(input, consoleWriter);
    }

控制台错误如下

代码语言:javascript
运行
复制
FreeMarker template error (DEBUG mode; use RETHROW in production!):
For "${...}" content: Expected a string or something automatically convertible to string (number, date or boolean), or "template output" , but this has evaluated to an extended_hash (wrapper: f.t.SimpleHash):
==> vals  [in template "sample" at line 1, column 175]

----
FTL stack trace ("~" means nesting-related):
    - Failed at: ${vals}  [in template "sample" at line 1, column 173]
----

希望这些补充信息能对我有所帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-04 14:05:21

vals中的'....'?eval_json的结果是一个包含来自您的json的值的hash

您不能使用${...}直接计算散列,但可以单独访问散列中的每个属性。

例如:

代码语言:javascript
运行
复制
<#assign vals='{  "success":true,  "timestamp":1627886463,  "base":"Data1",  "date":"2021-08-02",  "values":{    "data2":7.5,    "data3":44,    "data4":33  }}'?eval_json>
${vals.base}
${vals.date}
${vals.values.data2}

将输出

代码语言:javascript
运行
复制
Data1
2021-08-02
7.5
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68646393

复制
相关文章

相似问题

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