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)
相关推荐
还是大剑师兰特9 小时前
Vue3 前端专属配置(VSCode settings.json + .prettierrc)
前端·vscode·json
qq_2837200512 小时前
Cesium实战(三):加载天地图(影像图,注记图)避坑指南
json·gis·cesium
雷帝木木13 小时前
Flutter for OpenHarmony:Flutter 三方库 cbor 构建 IoT 设备的极致压缩防窃协议(基于标准二进制 JSON 表达格式)
网络·物联网·flutter·http·json·harmonyos·鸿蒙
长安110813 小时前
JsonCpp的编译与使用
json
凌晨一点的秃头猪14 小时前
JSON 文件基础介绍
json
凌晨一点的秃头猪16 小时前
Python JSON 模块核心函数超详细指南
json
小江的记录本18 小时前
【JWT】JWT(JSON Web Token)结构化知识体系(完整版)
前端·网络·web安全·http·网络安全·json·安全架构
早點睡39020 小时前
ReactNative项目OpenHarmony三方库集成实战:react-native-json-tree
react native·react.js·json
清水白石0081 天前
Python 对象序列化深度解析:pickle、JSON 与自定义协议的取舍之道
开发语言·python·json
晨欣2 天前
如何根据 config.json 核对 MoE 模型的激活参数:以 gpt-oss-120b 为例(GPT-5.4-high 生成)
gpt·大模型·json·openai