AWTK fscript 中的 JSON 扩展函数

fscript 是 AWTK 内置的脚本引擎,开发者可以在 UI XML 文件中直接嵌入 fscript 脚本,提高开发效率。本文介绍一下 fscript 中的 ** JSON 扩展函数 **

1.json_load

加载 json 数据。


原型
js 复制代码
json_load(str) => object
json_load(binary) => object
json_load(data, size) => object
示例
js 复制代码
var a = json_load('{"name": "fscript", "age": 100}');

2.json_save

将对象保存为 json 数据。


原型
js 复制代码
json_save(obj) => binary 
示例
js 复制代码
var a = json_load('{"name": "fscript", "age": 100}');
json_save(a);

3.json_save_to_string

将对象保存为字符串数据。


原型
js 复制代码
json_save_to_string(obj) => string 
示例
js 复制代码
var a = json_load('{"name": "fscript", "age": 100}');
print(json_save_to_string(a));

4.ubjson_load

加载 ubjson 数据。


原型
js 复制代码
ubjson_load(binary) => object
ubjson_load(data, size) => object
示例
js 复制代码
var a = ubjson_load(file_read_binary("test.ubjson"));

5.ubjson_save

将对象保存为 ubjson 数据。


原型
js 复制代码
ubjson_save(obj) => binary
示例
js 复制代码
var a = json_load('{"name": "fscript", "age": 100}');
var b = ubjson_save(a);

完整示例

js 复制代码
//load from string
var str='{
    "results": [
        {
            "location": {
                "id": "WS0E9D8WN298",
                "name": "GuangZhou"
            },
            "now": {
                "code": "9",
                "temperature": "30"
            },
            "last_update": "2022-04-28T14:50:00+08:00"
        }
    ],
    "name": "fscript",
    "age": 100
}'
var a = json_load(str)

assert(object_get(a, "results.[0].location.id")=="WS0E9D8WN298");
assert(object_get(a, "results.[0].location.name")=="GuangZhou");
assert(object_get(a, "results.[0].now.code")=="9");
assert(object_get(a, "results.[0].now.temperature")=="30");
assert(object_get(a, "results.[0].last_update")=="2022-04-28T14:50:00+08:00");
assert(object_get(a, "name")=="fscript");
assert(object_get(a, "age")==100);

// 获取数组类型节点的子元素个数
assert(object_get(a, "results.#size")==1);

//save to file
var b=json_save(a)
assert(file_write("test.json", b))

//json obj to string
var c=json_save_to_string(a)
print(c)

//load from file as text
a = json_load(file_read_text("test.json"))

assert(object_get(a, "name")=="fscript");
assert(object_get(a, "age")==100);

//load from file as binary
a = json_load(file_read_binary("test.json"))
assert(file_remove("test.json"))

assert(object_get(a, "name")=="fscript");
assert(object_get(a, "age")==100);

assert(file_remove("test.json"))
unset(a)
unset(b)
unset(c)
unset(str)
相关推荐
光影6276 小时前
Unittest单元测试基础速记
测试工具·单元测试·json·测试覆盖率
ZLongTeng8 小时前
EIDE的launch.json文件
json
梦想不只是梦与想12 小时前
Python 中的 json 模块
python·json·对象转字符串
步行cgn15 小时前
JSON.stringify 详解:把 JavaScript 对象变成 JSON 字符串
开发语言·javascript·json
阿正的梦工坊16 小时前
深入理解 JSON-RPC 2.0:轻量级远程调用协议详解
rpc·json
腾讯数据架构师17 小时前
任务跑完怎么直接出图表?CubeStudio 任务可视化 ECharts 数据格式实操(CSV/JSON + metric.json,11 种图表一键渲染)
前端·json·echarts·数据可视化
救救孩子把17 小时前
结构化输出为何“格式正确、答案错误”?JSON Schema 的能力边界
android·java·json·agent·agent服务
霸道流氓气质19 小时前
智能表单生成器:结构化输出契约、JSON Schema 驱动渲染与 EAV/JSONB 混合存储的 Vue3 + Spring AI 生产级实战
人工智能·spring·json
SEO_juper19 小时前
Bash 交叉验证 robots.txt 和 sitemap:两个文件自相矛盾,页面永远收录不了
开发语言·python·node.js·json·bash
AI 编程助手GPT2 天前
用 jq 清洗订单 JSON:先隔离异常,再统计已支付金额
json·jq