找回密码
 立即注册

微信登录

只需一步,快速开始

QQ登录

只需一步,快速开始

查看: 53|回复: 0

[心得] aardio 序列化与反序列化

[复制链接]
  • TA的每日心情
    开心
    前天 09:02
  • 签到天数: 51 天

    连续签到: 5 天

    [LV.5]常住居民I

    28

    主题

    56

    回帖

    714

    积分

    高级会员

    积分
    714
    来自: 中国贵州贵阳
    发表于 2025-5-20 13:11:36 | 显示全部楼层 |阅读模式 来自: 中国贵州贵阳
    非业余 - aardio 编程语言 - 非官方问答社区
    风行者三期培训:Aardio+Python+Flutter,1000集课程让你成为全栈开发高手!https://mp.weixin.qq.com/s/_WOoHFtITUyLk2k7BXYGkg
    Aardio培训大揭秘,轻松上手打造个人项目!https://mp.weixin.qq.com/s/cr47qhp_Cpz0p57lbbPwug
    aardio风行者第二期培训班https://mp.weixin.qq.com/s/uB6XHUDnGSk0JlWuiBE9AA
    aardio风行者第三期培训班https://mp.weixin.qq.com/s/cdZcvFiAWhlYTaSrQGCPvA
    本帖最后由 XWCXF 于 2025-5-20 13:14 编辑

    今天开始学习编程里的数据存储啦!

    一、数据序列化:给数据施个变身咒
    序列化就是把复杂的数据结构变成能存起来或传输出去的形式。在 aardio 里用得最多的是JSON格式,听说这是一种很轻便的数据格式,适合存东西和传数据。

    示例:数据变身
    [AAuto] 纯文本查看 复制代码
    import web.json
    import console;
    
    var data = {
        name = "张三",
        age = 25,
        hobbies = {"读书", "跑步"}
    }
    
    var jsonStr = web.json.stringify(data,"utf-8")
    console.log(jsonStr)
    
    console.pause();




    二、数据反序列化:把数据包裹拆开来
    有变身当然就有还原!反序列化就是把JSON字符串变回原来的数据结构,像拆快递一样。在aardio里用 web.json.parse 函数就能实现。

    示例:数据还原

    [AAuto] 纯文本查看 复制代码
    import web.json;
    import console;
    
    var jsonStr = '{"person": {"name": "赵六", "age": 35, "contact": {"phone": "13900139000", "email": "zhaoliu@example.com"}}, "projects": [{"name": "项目C", "status": "进行中"}, {"name": "项目D", "status": "已完成"}]}'
    
    var data = web.json.parse(jsonStr)
    console.log(data.person.name)
    console.log(data.projects[1].name)
    console.pause();




    三、数据存储与读取:把数据封印在文件里
    学会了变身和还原,接下来就是把数据存到文件里啦!

    示例1:把数据写入文件

    [AAuto] 纯文本查看 复制代码
    import web.json
    import fsys;
    
    var data = {
        title = "学习笔记",
        content = "今天学习了数据序列化与存储。"
    }
    
    var jsonStr = web.json.stringify(data,"utf-8")
    
    var file = io.file("/note.json", "w+b")
    file.write(jsonStr)
    file.close()

    示例2:从文件里读取数据

    [AAuto] 纯文本查看 复制代码
    import web.json;
    import console;
    
    var file = io.file("/note.json", "r")
    var jsonStr = file.readAll()
    file.close()
    
    var data = web.json.parse(jsonStr)
    console.log(data.title)
    console.log(data.content)
    console.pause();




    四、综合练习:完整走一遍流程
    题目是定义学生信息,存到文件再读出来。试着重写了一下代码,发现关键点在于:

    • 序列化和反序列化的函数别搞混(stringify 是变身,parse 是还原)
    • 文件路径要写对;
    • 反序列化后的数据结构要记清楚。

    我的代码:

    [AAuto] 纯文本查看 复制代码
    import web.json;
    import console;
    
    var student = {
        name = "小明",
        age = 18,
        score = 90
    }
    
    var jsonStr = web.json.stringify(student,"utf-8")
    var file = io.file("student.json", "w+")
    file.write(jsonStr)
    file.close()
    
    file = io.file("student.json", "r")
    jsonStr = file.readAll()
    file.close()
    var data = web.json.parse(jsonStr)
    
    console.log("姓名:" + data.name)
    console.log("成绩:" + tostring(data.score))
    console.pause();

    五、学习小结
    • 序列化:把数据变成JSON字符串,方便存储和传输;
    • 反序列化:把JSON字符串变回数据结构;
    • 文件操作:用 io.file 打开文件,write 写入、readAll 读取,记得用完关文件!

    不过还有点小疑问:
    • JSON里的中文会不会乱码?但是指定 utf-8 编码就没问题,试了下确实可以;
    • 除了JSON,还有其他序列化方式吗?可能以后会学到吧 ,反正还没学到。

    总之,今天的学习非常有用,又学到了一个知识点。





    非业余 - aardio 编程语言 - 非官方问答社区
    风行者三期培训:Aardio+Python+Flutter,1000集课程让你成为全栈开发高手!https://mp.weixin.qq.com/s/_WOoHFtITUyLk2k7BXYGkg
    Aardio培训大揭秘,轻松上手打造个人项目!https://mp.weixin.qq.com/s/cr47qhp_Cpz0p57lbbPwug
    aardio风行者第二期培训班https://mp.weixin.qq.com/s/uB6XHUDnGSk0JlWuiBE9AA
    aardio风行者第三期培训班https://mp.weixin.qq.com/s/cdZcvFiAWhlYTaSrQGCPvA
    回复

    使用道具 举报

    *滑块验证:
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|非业余 - aardio 编程语言 - 非官方问答社区 知道创宇云防御

    GMT+8, 2025-6-1 15:58 , Processed in 0.112230 second(s), 28 queries .

    Powered by Discuz! X3.5

    © 2001-2025 Discuz! Team.

    快速回复 返回顶部 返回列表