遍历 JSON

Iterate over JSON

我在根据 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>

For "#list" list source: Expected a sequence or collection, but this has evaluated to a number (wrapper: f.t.SimpleNumber): ==> row[key] ... ---- FTL stack trace ("~" means nesting-related): - Failed at: #list row[key] as rk Reached through ...

有什么建议吗?

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

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