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

Oracle Visual Builder忽略父键获取JSON数组子元素值咨询

问题原因

Oracle Visual Builder 的绑定表达式不支持 JSONPath 递归下降语法 ..,因此你原来的写法无法匹配currencies下动态键对应的子对象属性,才会返回空值。

解决方案

方案1:单货币场景(适配99%以上国家)

绝大多数国家只有一种官方货币,直接将currencies对象转为数组后取第一个元素的name属性即可,修改模板代码如下:

<oj-table scroll-policy="loadMoreOnScroll" class="oj-flex-item oj-sm-12 oj-md-12"
    data="[[$page.variables.getAllListSDP]]"
    columns='[{"headerText":"Currency","field":"currencies","template":"officialCellTemplate2"}]'>
    <template slot="officialCellTemplate2">
      <oj-bind-text value="[[ Object.values($current.data.currencies)[0]?.name ]]"></oj-bind-text>
    </template>
  </oj-table>

代码中的可选链?.用于规避部分无货币数据的国家导致的页面报错。

方案2:多货币兼容场景

如果需要展示一国所有货币名称,可将所有货币名拼接后输出,绑定表达式修改为:

[[ Object.values($current.data.currencies).map(curr => curr.name).join('、') ]]

方案3:低版本VBCS兼容

如果你使用的VBCS版本不支持在绑定表达式中直接调用Object原生方法,可在页面JS模块中新增自定义函数:

// 页面对应的JS文件中添加
PageModule.prototype.getCurrencyNames = function(currencies) {
  if (!currencies || typeof currencies !== 'object') return '';
  return Object.values(currencies).map(item => item.name).join('、');
}

之后在模板中调用自定义函数即可:

<oj-bind-text value="[[$page.functions.getCurrencyNames($current.data.currencies)]]"></oj-bind-text>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 17:54:03