294 Star 1.6K Fork 387

GVP合宙Luat / LuatOS

 / 详情

AIR101 json.encode()将对象序列化为json字符串后,顺序不一致

已完成
任务
创建于  
2021-12-30 21:58

固件版本

  • 固件名称:如 LuatOS-SoC_V0006_AIR101_LVGL.soc
  • 使用设备:如 Air101开发板
  • 使用功能:序列化为json字符串 参照demo 中json例子

描述一下这个问题

序列化后的json字符串的键的次序与table中元素的次序不一样.比如
local t = {
a = 1,
b = "abc",
c = {
1,2,3,4
},
d = {
x = false,
j = 111111
},
aaaa = 6666,
}
则序列化json字符串为 {"aaaa":6666,"b":"abc","a":1,"d":{"x":false,"j":111111},"c":[1,2,3,4]}

截图

输入图片说明
输出结果:
输入图片说明

日志

[2021-12-30 21:51:36.609] I/main auth ok 680845464633388597DE air101
[2021-12-30 21:51:36.612] I/main LuatOS@air101 core V0007 bsp V0006
[2021-12-30 21:51:36.612] I/main ROM Build: Dec 16 2021 09:06:12
[2021-12-30 21:51:36.612] I/fs Using LuaDB as script zone format 081E0000
[2021-12-30 21:51:36.612] D/main loadlibs luavm 180208 10176 10632
[2021-12-30 21:51:36.612] D/main loadlibs sys 12288 5248 5248
[2021-12-30 21:51:36.641] I/user.main json demo
[2021-12-30 21:51:36.641] nil
[2021-12-30 21:51:36.644] {"aaaa":6666,"b":"abc","a":1,"d":{"x":false,"j":111111},"c":[1,2,3,4]}
[2021-12-30 21:51:36.644] 1.000000 abc false

最小复现工程

-- LuaTools需要PROJECT和VERSION这两个信息
PROJECT = "jsondemo"
VERSION = "1.0.0"

-- 引入必要的库文件(lua编写), 内部库不需要require
local sys = require "sys"

log.info("main", "json demo")
print(json.null)

local t = {
a = 1,
b = "abc",
c = {
1,2,3,4
},
d = {
x = false,
j = 111111
},
aaaa = 6666,
}

local s = json.encode(t)

local st = json.decode(s)

print(s)
print(st.a,st.b,st.d.x)

-- 用户代码已结束---------------------------------------------
-- 结尾总是这一句
sys.run()
-- sys.run()之后后面不要加任何语句!!!!!

评论 (2)

armxu 创建了任务
armxu 修改了描述
展开全部操作日志

table无序的, 并不保证顺序

谢谢!涨知识了。

晨旭 任务状态待办的 修改为已完成

登录 后才可以发表评论

状态
负责人
项目
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
预计工期 (小时)
参与者(2)
4674 wendal 1578914274
Lua
1
https://gitee.com/openLuat/LuatOS.git
git@gitee.com:openLuat/LuatOS.git
openLuat
LuatOS
LuatOS

搜索帮助

344bd9b3 5694891 D2dac590 5694891