我想将复杂的数据从 C++ 服务传递到 Lua 应用程序。这种通信是通过网络进行的。为了 Lua 应用程序的简单性和速度,我更愿意发送文本 Lua 表文本(不需要单独的解析器),而不是 XML 或 JSON 或 YAML 等。
虽然存在诸如编写 JSON 的 C++ 库之类的东西,但我找不到用于创建序列化 Lua 的现有 C++ 库。那么,我的想法是使用现有的 C++ JSON 库,然后将字符串转换为 Lua。
例如,我想转换这个字符串:
{
"hello":42,
"array":[1,2,{"more":false},null,true],
"worst":"still [null]: got it?"
}
进入这个字符串:
{
["hello"]=42,
["array"]={1,2,{["more"]=false},nil,true},
["worst"]="still [null]: got it?"
}
简单的replace_all
转换为:
转换为=
,[]
转换为{}
和 null
到 nil
将破坏字符串内的内容。我如何执行此转换?
为了避免 XY problem 的问题我在顶部和标题中包含了我的最终动机,以防 JSON->Lua 字符串转换是错误的选择。
最佳答案
我会编码Lua -格式serializing我自己的图书馆。您可以选择free software Json C++ 库(例如 jsoncpp 或 libjson )并很容易地调整其代码(适合您的 Lua 格式)。
当然你应该遵守该库的许可,我强烈建议你让你的Lua格式序列化库本身成为一个自由软件,例如上github和/或freecode和/或sourceforge ...
重点是JSON (希望您的 Lua 格式)足够简单,可以轻松解析或打印...将现有库调整为您的格式可能比“后处理”其输出更简单,而且肯定更快...
关于c++ - 从 C++ 序列化 Lua 表(通过 JSON),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20978023/