感觉 JSON 对于低级语言不太友好,尤其是那些对字符串处理能力比较有限的语言。有可能是个重复的轮子,不过我自己没有找到已有的比较好的方案,不过 JSON 的库确实挺全,可以用起来还是多多少少没有高级语言里那么顺手。
所以这个数据格式并没有解决全部问题,但我觉得至少解决了部分问题。
SOON ( Stack Oriented Object Notation )是我参考 JSON 做的轻量级面向堆栈的数据交换格式,面向堆栈意味着它更容易被程序处理,但损失了可读性。
举例子:
有 JSON 字符串[{"key": "value1"}, {"key": "value2"}]
,相对应的 SOON 字符串为"value1" "key" O1 "value2" "key" O1 A2
。
程序处理时将 SOON 字符串先以空格拆分,然后建立一个空栈 stack。
"value1"
入栈"key"
入栈O1
指令表示目前栈顶的数据是一个对象( Object ),对象包含 1 个成员"key"
出栈作为 obj1 中一个成员的 key"value1"
出栈作为 obj1[key]的值"value2" "key" O1
创建了 obj2 并入栈A2
指令表示目前栈顶的数据是一个数组( Array ),数组包含 2 个元素我用 TypeScript 做了实现来验证想法:https://github.com/Sneezry/StackOrientedObjectNotation
Playground: https://output.jsbin.com/kiyojexico
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.