toStdJson

语法

toStdJson(obj,[longAsString=false])

详情

将 DolphinDB 对象转换为标准 JSON 类型。

  • 转化 bool 值时,返回 true 或 false 值。
  • 转换空值时,将除了 STRING 类型空值以外的其他所有类型空值都转换为null。

参数

  • obj 的数据形式不可为 matrix 或 pair;数据类型不可为 UUID, IPADDR, INT128, COMPRESSED 以及系统类型。
  • longAsString 布尔类型标量,指定是否将 LONG 类型的非空值转为 JSON 字符串。默认为 false,此时 LONG 类型的非空值将按照 JSON number 输出。LONG 类型的 NULL 值始终输出为 JSON null。

    注:
    如果需要在 JavaScript、Web 前端、REST API 等场景中传输超大整数,可以指定 longAsString=true,避免 LONG 类型在 JSON 反序列化过程中发生精度丢失。反序列化后可以使用 long 函数将 STRING 类型转为 LONG 类型。

返回值

STRING 类型标量。

例子

x=1 2 3
toStdJson(x);
// output: 
[1, 2, 3]

t=table(1 2 3 as id, 10 20 30 as val)
toStdJson(t);
// output: 
[{"id": 1,"val": 10},{"id": 2,"val": 20},{"id": 3,"val": 30}]

b = set(2012.06.13T13:30:10 2017.07.10T14:10:12)
toStdJson(b);
// output: 
["2017.07.10 14:10:12","2012.06.13 13:30:10"]

b = dict(INT,DATETIME)
b[0] = 2012.06.13 13:30:10
b[1] = 2017.07.10 14:10:12
toStdJson(b);
// output:
{"1": "2017.07.10 14:10:12","0": "2012.06.13 13:30:10"}

t1=table(`x`y`z as b, 2012.06.13 13:30:10 2012.06.13 13:30:10 2012.06.13 13:30:10 as c,10.8 7.6 3.5 as F)
toStdJson(t1);
// output:
[{"b": "x","c": "2012.06.13 13:30:10","F": 10.8},{"b": "y","c": "2012.06.13 13:30:10","F": 7.6},{"b": "z","c": "2012.06.13 13:30:10","F": 3.5}]

指定 longAsString=true,避免精度丢失。

x = 3380900824313224451l

y1 = toStdJson(x)
// 输出:3380900824313224451

y2 = toStdJson(x, true)
// 输出:"3380900824313224451"

// 分别对 y1 和 y2 进行反序列化
res1 = long(fromStdJson(y1))
res2 = long(fromStdJson(y2))

x == res1 // 由于精度丢失,返回 false
x == res2 // 精度未丢失,返回 true

相关函数:toJsonlong