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

如何在Jasper Studio 6.21.5中获取JSON对象的嵌套数据

JasperReports JSON子数据源问题解决

你遇到的核心问题是误用了XML数据源的API处理JSON数据,同时内置函数SUB_DATA_SOURCE()并不适配JSON数据源场景。以下是针对性的解决步骤:

错误原因

你使用的net.sf.jasperreports.engine.data.JRXmlDataSource是专门处理XML数据源的类,和JSON数据源完全不兼容,这直接导致了报错。而SUB_DATA_SOURCE()函数通常是XML数据源的内置函数,同样不适用于JSON数组的子数据源创建。

正确解决方案

针对你的JSON结构,需要使用JSON专属的JRJsonDataSource来生成子数据源:

  1. 确认主数据源类型
    确保报表的主数据源是JRJsonDataSource,配置时正确指向你的JSON数据(无需额外修改XML文件)。

  2. 子数据源表达式写法
    在子报表或列表组件的数据源表达式中,直接用JRJsonDataSource接收JSON数组字段:

    new net.sf.jasperreports.engine.data.JRJsonDataSource($F{ReceiptDetails})
    

    这里的$F{ReceiptDetails}对应你JSON中的数组字段,JRJsonDataSource会自动解析这个数组作为子数据源。

  3. 子报表字段映射
    在子报表中添加与JSON数组元素匹配的字段:

    • 字段名设为SNo,对应JSON中的"SNo"键
    • 字段名设为desc,对应JSON中的"desc"键
      注意字段名大小写要和JSON键完全一致。

验证要点

  • 移除所有和JRXmlDataSource相关的表达式,避免混淆数据源类型
  • 确保主数据源已正确加载JSON数据,能正常读取name等顶层字段

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 09:12:40