You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Apache Velocity中读取含特殊键的JSON并遍历列表?

在Apache Velocity中读取JSON的List类型属性并遍历University列表

前提说明

Velocity本身不直接解析JSON,需要先将JSON数据转换为Velocity可识别的Java对象(如Map<String, Object>或自定义POJO),常用的JSON解析库有Jackson、Gson等。

步骤1:解析JSON为Java对象

以Jackson为例,将你的JSON字符串解析成Map对象:

import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.Map;

public class VelocityJsonDemo {
    public static void main(String[] args) throws Exception {
        String jsonStr = "{\"StudentName\":\"XYZ\",\"List<University>\": [{\"Name\": \"NYU\",\"City\": \"NY\",\"Country\":\"US\"}]}";
        ObjectMapper mapper = new ObjectMapper();
        Map<String, Object> studentData = mapper.readValue(jsonStr, Map.class);
        
        // 将解析后的对象放入Velocity上下文
        org.apache.velocity.VelocityContext context = new org.apache.velocity.VelocityContext();
        context.put("studentData", studentData);
        // 后续加载模板并渲染的代码省略
    }
}

注意:你的示例JSON中键名List&lt;Univesity&gt;存在拼写错误(Univesity应为University),解析时需确保键名和代码中一致。

步骤2:在Velocity模板中读取并遍历列表

模板中通过#foreach指令遍历列表,由于键名包含特殊字符,需用方括号语法访问:

<!-- 读取学生姓名 -->
学生姓名:$studentData.StudentName

<!-- 遍历University列表 -->
<h3>就读院校:</h3>
#foreach($university in $studentData["List<University>"])
    <p>
        院校名称:$university.Name<br>
        所在城市:$university.City<br>
        所属国家:$university.Country
    </p>
#end

渲染结果

最终渲染后会输出:

学生姓名:XYZ

就读院校:

院校名称:NYU
所在城市:NY
所属国家:US

内容的提问来源于stack exchange,提问作者James Stan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 20:25:18