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

XQuery解析REST JSON返回数值被四舍五入如何保留小数位?

解决方案

核心修改点

  • 将Total列的字段类型从通用的xs:number替换为精确十进制类型xs:decimal,避免BI引擎默认对通用数值类型做自动取整处理
  • 提取Total字段值时,强制转换为xs:decimal类型,保留原始JSON返回的全部小数精度
  • 补充原代码缺失的变量定义、语法闭合问题,优化冗余的变量赋值逻辑
  • 注意原始JSON返回的数量字段键名为Quanity(拼写缺字母t),如果实际拉取时数量字段取值异常可以对应调整代码里的属性匹配名

修改后完整代码

let $uri := ('http://XXXXXXXXXXXXXX') (: 补充原代码缺失的URI右引号 :)
let $payload := ( )
let $header := () (: 接口需要自定义请求头可在此补充 :)
let $jsonresult := mstr-rest:post($uri,$payload,$header)
let $result := json:parse($jsonresult)

return 
<Table><ColumnHeaders>
<ColumnHeader  name='json' type='xs:string' />
<ColumnHeader  name='Quantity' type='xs:number' />
<ColumnHeader  name='Total' type='xs:decimal' /> (: 替换为精确十进制类型 :)
</ColumnHeaders>
<Data>{for $ancestor in $result
order by $ancestor
return <Row>
<json>{fn:data($ancestor)}</json>
<Quantity>{fn:data($ancestor/pair[@name="Quantity"])}</Quantity>
<Total>{xs:decimal(fn:data($ancestor/pair[@name="Total"]))}</Total> (: 强制转精确十进制保留全量小数 :)
</Row>}</Data>
</Table>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 20:45:03