7.5 JSON 函数
依赖模块
本库由 dataql-engine 提供,导入 net.hasor.dataql.host.function.encryt.JsonUdfSource 后使用。
本库在 DataQL 数据和 JSON 字符串之间转换。
toJson
json.toJson(value) 接收对象、列表或基本值,返回 JSON 字符串。对象中的空值字段省略,列表中的空值保留,根值 null 返回字符串 "null"。
import 'net.hasor.dataql.host.function.encryt.JsonUdfSource' as json;
return json.toJson({'name':'Alice', 'nickname':null, 'tags':[null, 'dataql']});
返回字符串,其内容为:
{"name":"Alice","tags":[null,"dataql"]}
toFmtJson
json.toFmtJson(value) 接收与 toJson 相同的数据,返回带缩进和换行的 JSON 字符串。
import 'net.hasor.dataql.host.function.encryt.JsonUdfSource' as json;
return json.toFmtJson({'name':'Alice', 'enabled':true});
返回字符串,其内容为:
{
"name" : "Alice",
"enabled" : true
}
fromJson
json.fromJson(text) 接收 JSON 字符串,返回对应的对象、列表或基本值,可继续取值和转换。null 和空白输入返回 null,非法 JSON 抛出异常;JSON 中的空值字段会保留,小数按十进制数解析。
import 'net.hasor.dataql.host.function.encryt.JsonUdfSource' as json;
var person = json.fromJson('{"name":"Alice","age":25,"nickname":null}');
var values = json.fromJson('[1,2,3]');
return {
'name': person.name,
'nextAge': person.age + 1,
'nicknameIsNull': person.nickname == null,
'first': values[0],
'enabled': json.fromJson('true')
};
{"name":"Alice","nextAge":26,"nicknameIsNull":true,"first":1,"enabled":true}
函数和二进制值需先转换为适合 JSON 的数据,二进制编码见类型转换函数。