当前位置: 首页 > article >正文

AWTK fscript 中的 JSON 扩展函数

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

1.json_load

加载 json 数据。


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

2.json_save

将对象保存为 json 数据。


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

3.json_save_to_string

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


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

4.ubjson_load

加载 ubjson 数据。


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

5.ubjson_save

将对象保存为 ubjson 数据。


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

完整示例

//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)

http://www.kler.cn/a/386908.html

相关文章:

  • 网页版五子棋——对战模块(服务器端开发②)
  • uniapp 设置安全区域
  • Java复习42(PTA)
  • PHP API如何使用access_token开放接口有效期
  • 算法训练(leetcode)二刷第二十三天 | 455. 分发饼干、*376. 摆动序列、53. 最大子数组和
  • 移门缓冲支架的作用与优势
  • Spark 的介绍与搭建:从理论到实践
  • Java命名规范
  • (2024.11.5)亚博树莓派5部署yolov8目标检测
  • Jmeter的安装,设置中文,解决乱码问题
  • A021基于Spring Boot的自习室管理和预约系统设计与实现
  • 前端实现数据下载为json文件
  • 【Lucene】什么是全文检索?解读结构化数据与非结构化数据
  • 从pg_depend和pg_class开始了解MogDB/openGauss/postgresql的系统元数据设计
  • Pytest-Bdd-Playwright 系列教程(7):使用测试代码生成辅助工具
  • 【人工智能-初级】练习题:利用Scikit-learn实现K-Means聚类算法的案例
  • 原生html+js输入框下拉多选带关闭模块完整案例
  • 算力与能量的全分布式在线共享来降低5G网络的用电成本。基于随机对偶次梯度法的多时隙约束耦合问题解耦方法示例;随机对偶次梯度法的在线管理策略
  • Java基础Day-Fifteen
  • 小红书图文矩阵的运营策略与引流技巧解析
  • 兵马未动,粮草先行-InnoDB统计数据是如何收集的
  • Webserver(5.4)项目整体
  • 国产化浪潮下,高科技企业如何选择合适的国产ftp软件方案?
  • 教程:FFmpeg结合GPU实现720p至4K视频转换
  • PySimpleGUI 库 和 pymsql 库
  • 内置RTK北斗高精度定位的4G执法记录仪、国网供电服务器记录仪