【问题标题】:Iterate over JSON遍历 JSON
【发布时间】:2018-11-03 08:09:03
【问题描述】:

我在从 REST API 的响应中迭代 JSON 对象时遇到问题。

这是我使用的代码:

<#assign row=table_subject.rows[0]>

<#if row?is_sequence>
  <#list row as c>
    ${c}
  </#list>
<#elseif row?is_hash_ex>
  <#list row?keys as key>
        <#list row[key] as rk>
          <#list rk?keys as rkk>
            ${key} - ${rkk}
          </#list>
        </#list>
  </#list>
<#elseif row?is_string>
  ${row}
</#if>

对于“#list”列表源:需要一个序列或集合,但这 已评估为一个数字(包装器:f.t.SimpleNumber):==> row[key] ... ---- FTL 堆栈跟踪(“~”表示与嵌套相关):- 失败于:#list row[key] as rk Reached through ...

有什么建议吗?

【问题讨论】:

    标签: json freemarker


    【解决方案1】:

    row[key] 给出键值对中的值,因此它不是(或不一定)可列出的。你也不需要两个相互嵌套的#list-s:你已经有了键(key)和值(row[key])。但是有一种更好的方式来列出哈希(从 FreeMarker 2.3.25 开始):

    <#list row as key, value>
       ${key} - ${value}
    </#list>
    

    【讨论】:

    • 我有版本 2.3.23 :(
    • 将 FreeMarker 升级到最新版本,2.3.x-s 完全向后兼容。使用旧版本可能会花费更多时间。如果你真的无法升级,那么只需列出密钥,并使用row[key] 作为值,就像我上面所说的那样。
    猜你喜欢
    • 2021-01-11
    • 2011-10-05
    • 1970-01-01
    • 1970-01-01
    • 2015-01-11
    • 2017-01-10
    • 2011-02-05
    相关资源
    最近更新 更多