【发布时间】:2019-08-19 21:13:49
【问题描述】:
我正在构建一个网络应用程序,并且需要能够在将用户生成的数据传输到我的服务器之前尽可能简洁地对其进行编码。过去我使用过 Flash,它有一个非常简洁的系统,对于您想要序列化的任何类,您都可以编写一对函数来准确描述如何序列化数据。例如:
out.writeShort(session);
out.writeUnsignedInt(itemID);
out.writeObject(arbitraryData);
out.writeShort(score);
您必须编写一个等效函数来从序列化数据中读取字节并从中构建类。
一旦数据被序列化,它就可以被编码成 Base64 字符串,以便安全地网络传输到服务器。
我不知道如何在 Javascript 中做到这一点? JSON 很好也很简单,但它非常浪费,发送所有对象键/值对,除非我弄错了,否则所有内容都被编码为字符串?所以值 false 被编码为字符串“false”?
任何关于如何在 Javascript 中实现这一点的建议将不胜感激!只要它们在 Node 和浏览器上都可以使用,就可以使用库。
【问题讨论】:
-
如果您不需要一些花哨的语法,可能会使用DataView 或只是Uint8Array + Bitwise Operators - 也可以使用ajax 发送它们
-
如果你愿意,你可以只写单个字符串,而不是 JSON,并通过阅读你编写它的相同方式来反序列化它。不过,不确定为什么 JSON 这么糟糕 - 您可以将对象修剪为相关的任何内容。
-
使用单个字符串并使用自己的数据表示方式,在另一端编写反序列化器对其进行解码。例如,如果 name = Prasanna,male = true 可以编码为 "name=prasanna&male=(bool)true" 将其转换为 Uint8Array 或 base64 字符串,同时传输到服务器
标签: javascript