如何在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<Univesity>存在拼写错误(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
相关产品推荐
相关产品推荐

