oracle - Oracle JSON_OBJECT 在字符串化时省略前导零
问题描述
我正在使用 Oracle Rest Data Services(ORDS 与使用 JSON 格式的一些客户进行通信。当我创建 JSON_OBJECT 并尝试对其进行字符串化时,某些数字不符合 ECMA-404 标准。
PLSQL 示例:
PROCEDURE TEST_PROC(myJson OUT CLOB) IS
myNumber NUMBER;
BEGIN
jsonObject := new JSON_OBJECT_T();
myNumber := 0.05;
jsonObject.put("myNumberOutput", myNumber);
myJson := jsonObject.to_clob();
END PROCEDURE;
myJson 的最终值(这是我发送给我的客户的)是:
{"myNumberOutput" : .05}
我所期望的:
{"myNumberOutput" : 0.05}
奇怪的是,如果我将 myNumber 设置为 0.5 而不是 0.05,那么我从 Oracle 得到的结果是:
{"myNumberOutput" : 0.5}
就像我预期的那样。
有没有人知道我应该怎么做才能获得具有数字格式的 json 字符串,并且当数字小于 0.1 时,前导零?
解决方案
你能在你的系统上运行下面的代码吗,因为我无法重现
SQL> variable c clob
SQL> declare
2 myNumber NUMBER;
3 jsonObject JSON_OBJECT_T := JSON_OBJECT_T();
4 BEGIN
5 myNumber := 0.05;
6 jsonObject.put('myNumberOutput', myNumber);
7 :c := jsonObject.to_clob();
8 END;
9 /
PL/SQL procedure successfully completed.
SQL> print c
C
-----------------------------------------------------
{"myNumberOutput":0.05}
推荐阅读
- git - `git commit --amend -C HEAD` 和 `git commit --amend --no-edit` 一样吗?
- entity-framework - System.InvalidOperationException 将 EntityFrameworkCore 从 2.1 更新到 2.2 以获取可为空的属性
- c# - 将 ASP.Net WebAPI 请求转发到另一个 API
- loopbackjs - 在 Loopback 3 中修改 ChangeStream 响应
- python - smptlib 返回不使用 Comcast 发送电子邮件 - 但适用于 Gmail,不存在错误
- android-studio - Android 3.3 和 ConstraintLayout 问题
- python-3.x - 无法从 usaddress-scourgify 中的 yamlconf 导入配置
- node.js - Mongoose 模式验证:验证非必填字段时出现空字符串错误
- javascript - JS 用于将纯 html 表转换为 Bootstrap 表
- mysql - 如果字段不为空,MYSQL 连接三个表