2019独角兽企业重金招聘Python工程师标准>>>

看了还是不是很懂,也暂时不知道具体怎么使用比较方便。

看了这些,再参考下项目的用法,序列号主要是把table表转化成string字符串,使用io文件操作保存到本地文件,加载时通过io加载出来,然后使用loadstring()方法,把string转化成table的数据。在此要注意的是,table序列化成string时,格式要方便使用loadstring方法。

还有一篇文章来自:http://dearymz.blog.163.com/blog/static/2056574200939103246797/

通常需要序列化一些数据,也就是将数据转换为一个字节流或字符流,然后就可以将其方便的持久化。文本序列化可选择的格式非常多:SOAP、Json甚至自定义xml等,不过lua脚本也是一个不错的选择方案。

本文在参考《Lua程序设计(第2版)》简体中文版 第12章 数据与持久化 12.2 和12.2.1 的基础上给出下面的实现。要注意的是该实现只能针对无环的table,并且不能对function、thread、userdata这三种类型进行序列化和反序列化。为了防止序列化后数据过大,也没有做精细的排版控制。

function serialize(obj)
     local lua = ""
     local t = type(obj)
     if t == "number" then
         lua = lua .. obj
     elseif t == "boolean" then
         lua = lua .. tostring(obj)
     elseif t == "string" then
         lua = lua .. string.format("%q", obj)
     elseif t == "table" then
         lua = lua .. "{\n"
         for k, v in pairs(obj) do
             lua = lua .. "[" .. serialize(k) .. "]=" .. serialize(v) .. ",\n"
         end
         local metatable = getmetatable(obj)
         if metatable ~= nil and type(metatable.__index) == "table" then
             for k, v in pairs(metatable.__index) do
                 lua = lua .. "[" .. serialize(k) .. "]=" .. serialize(v) .. ",\n"
             end
         end
         lua = lua .. "}"
     elseif t == "nil" then
         return nil
     else
         error("can not serialize a " .. t .. " type.")
     end
     return lua
 end
 function unserialize(lua)
     local t = type(lua)
     if t == "nil" or lua == "" then
         return nil
     elseif t == "number" or t == "string" or t == "boolean" then
         lua = tostring(lua)
     else
         error("can not unserialize a " .. t .. " type.")
     end
     lua = "return " .. lua      local func = loadstring(lua)
     if func == nil then return nil end
     return func()
 end

data = {["a"] = "a", ["b"] = "b", [1] = 1, [2] = 2, ["t"] = {1, 2, 3}}
local sz = serialize(data)
print(sz)
print("---------")
print(serialize(unserialize(sz)))

转载于:https://my.oschina.net/u/2005342/blog/317158

数据持久化,序列化,反序列化,文件读写1相关推荐

  1. 利用序列化进行文件读写

    文章标题:利用序列化进行文件读写 原 作 者:vchelp 原 出 处:vchelp 发 布 者:loose_went 发布类型:转载 发布日期:2006-09-05 今日/总浏览:1/4935 在很 ...

  2. 爬虫数据持久化存储——写入文件

    这里写目录标题 爬虫数据持久化存储--写入文件 open方法 文件的读取及写入 爬虫数据持久化存储--csv文件 爬虫数据处理:操作数据库模块--pymysql pymysql介绍: pymysql安 ...

  3. Part 10:iOS的数据持久化(1),文件,归档

    本章中主要学习数据持久化与各种持久化方式的实现方法 沙箱目录 沙箱目录设计的原理就是只能允许自己的应用访问目录,而不允许其他的应用访问. 1. Documents 目录 大量的数据,经常变化,最重要的 ...

  4. 序列化反序列化api(入门级)

    定义: java序列化是指把Java对象转换为字节序列的过程:而Java反序列化是指把字节序列恢复为Java对象的过程. 为什么字符串通常也会进行序列化? 对象需要进行序列化的原因:保证对象的状态不变 ...

  5. Android数据持久化

    Android数据持久化(存储) 1.SharedPreferences SharedPreferences是Android提供的数据持久化的一种手段,适合单进程.小批量的数据存储与访问.Shared ...

  6. Redis Template使用append方法不起作用的解决办法以及序列化/反序列化的解释

    今天使用Redis Template进行测试发现的问题, 遇到这个错 org.springframework.data.redis.serializer.SerializationException: ...

  7. mysql不能持久存储数据的是_数据持久化存储

    一数据持久化存储-csv文件 1.作用 将爬取的数据存放到本地的csv文件中 2.使用流程 1.导入模块2.打开csv文件3.初始化写入对象4.写入数据(参数为列表)importcsv with op ...

  8. python异步读写文件_一文彻底搞懂python文件读写

    Python文件读写 一,I/O操作 I/O在计算机中是指Input/Output,也就是Stream(流)的输入和输出.这里的输入和输出是相对于内存来说的,Input Stream(输入流)是指数据 ...

  9. python-day7-数据操作+TXT文件读写操作

    python-day7-数据操作 一.数据分析 (一)定义 数据分析,指用专业的统计分析方法对大量数据进行分析,并加以详细研究和概括总结,提取有价值的信息,形成有效的分析结论,从而影响业务决策. (二 ...

  10. plist文件读写,序列化与反序列化,文件的读写[xcode4.4.1]

    这篇学习目标: plist文件读写 对象序列化与反序列化 本地文件的读写 iCloud存储的API 引言 在做iOS开发时,经常用到到plist文件,  那plist文件是什么呢? 它全名是:Prop ...

最新文章

  1. Happy WS 之 控制台 -- Happy Console (一)
  2. (-215:Assertion failed) dst.data == (uchar*)dst_ptr in function 'cvShowImage'
  3. 常用抓包工具(可编程抓包工具)
  4. 索引 - 数据结构 - B+TREE
  5. 用eclipse创建动态web项目手动生成web.xml方法
  6. 动态规划——数塔(hdu2084)
  7. react setState里的作用域
  8. 配置实体框架DbContext的可扩展方案
  9. 自动化测试 (四) 自动卸载软件
  10. JAVA面向对象——继承
  11. MariaDB 10.3 instant ADD COLUMN亿级大表毫秒级加字段
  12. 【渝粤题库】陕西师范大学500009 微机原理
  13. php二维数组根据某个字段排序的排序(商品按销量或其他字段排序)
  14. Mybatis源码阅读之一——工厂模式与SqlSessionFactory
  15. 智能车的转弯部分_教训:渣土车“两米生死线”千万别跨!记者带你亲身体验...
  16. 【HTML+CSS】移动端布局之流式布局
  17. 大数据导论习题_《大数据导论(通识课版)》.PDF
  18. python图片转换成文字_在python中将图像转换为字节文字 - python
  19. php安全挑战赛,TSRC挑战赛: PHP场景中getshell防御思路分享
  20. 我为什么鼓励工程师写博客

热门文章

  1. 用javascript+PHP随机显示图片
  2. SQLSERVER2000 存储过程与ORACLE存储过程对比
  3. iOS :APP 提交描述注意事项
  4. CodeMirror入门
  5. C. mathematican 的二进制
  6. vue.js实现自定义输入分页
  7. 质因数分解 2012年NOIP全国联赛普及组
  8. hdu 5003 模拟水题 (2014鞍山网赛G题)
  9. Hadoop MapReduce链式实践--ChainReducer
  10. VC ODBC使用总结