它就像 JSON,但更快!
这是什么?
MessagePack 是一种高效的二进制序列化格式,让您可以在类似于 JSON 的多种语言之间交换数据,除了它更快、更小。小的整数编码成一个字节,典型的短字符串只需要 additional 字节加上字符串本身。
您可以直接从主网站阅读有关 规范 的更多内容。
它完全由 Swift 编写,无依赖项,轻量级且完全便携
您的支持
嗨,开发者朋友!
你知道,维护和开发工具需要消耗资源和时间。虽然我喜欢制作它们,但 您的支持对于我继续其发展非常关键。
如果您正在使用 SwiftLocation 或我的其他任何作品,请考虑以下选项
索引
使用方法:一次打包和解包
序列化和反序列化都在一个Data
对象内部完成。
为了打包一个或多个对象,您需要创建一个空的Data
实例,并通过传递您想序列化的对象(们)调用pack
方法。这很简单,看看这里
var data = Data()
do {
let obj1 = "Hello World"
let obj2 = 45.5
let obj3: [AnyHashable:Any?] = [ "key_1" : "value test","key_2" : 4,"key_3" : true, otherHashableKey: "value1"]
// Now you can pack your instances by passing them to pack function
try data.pack(obj1,obj2,obj3)
} catch {
print("Something went wrong while packing data: \(error)")
}
反序列化数据也很简单,只需要向包含msgpack数据的Data
实例调用unpack
函数
let data: Data = // msgpack data...
do {
let decodedObj: Any? = try data.unpack()
} catch {
print("Something went wrong while unpacking data: \(error)")
}
支持类型
SwiftMsgPack支持以下Swift类型
字符串
Data
布尔值
nil
- 数字值:
Int
&UInt
(《Uint8》、《Int8》、《Uint16》、《Int16》、《Uint32》、《Int32》、《Uint64》、《Int64》),《Float》和《Double》 字典
(《[AnyHashable:Any?])数组
(《[Any?])
以下限制由MsgPack规范格式指定
- 整数对象的值限制为从
-(2^63)
到(2^64)-1
- 二进制对象的最大长度为
(2^32)-1
- 字符串对象的最大字节大小为
(2^32)-1
- 字符串对象可能包含无效的字节序列,反序列化器在接收到无效字节序列时的行为取决于实际实现
- 反序列化器应提供获取原始字节数组的函数,以便应用程序可以决定如何处理对象
- 数组对象的最大元素数量为
(2^32)-1
- 映射对象的最大键值对数量为
(2^32)-1
安装
您可以使用CocoaPods、Carthage和Swift包管理器安装Swiftline
CocoaPods
use_frameworks!
pod 'SwiftMsgPack'
Carthage
github 'malcommac/SwiftMsgPack'
Swift Package Manager
在您的 Package.swift
文件中将 swiftline 作为依赖项添加
import PackageDescription
let package = Package(name: "YourPackage",
dependencies: [
.Package(url: "https://github.com/malcommac/SwiftMsgPack.git", majorVersion: 0),
]
)
测试
SwiftMsgPack 通过 XCTest 实现了广泛的覆盖。您可以在 Tests/SwiftMsgPackTests
文件夹中找到一个测试的完整列表。测试也可以在 XCode 中通过 SwiftMsgPack 项目运行。
贡献
- 如果您需要帮助或想提出一个 一般性问题,请创建一个 issue。
- 如果您找到一个 bug,请创建一个 issue。
- 如果您有一个 功能请求,请创建一个 issue。
- 如果您想 贡献力量,请提交一个 pull request。
版权 & 致谢
SwiftLocation 目前由 Daniele Margutti 所拥有和维护。
您可以在 Twitter 上关注我 @danielemargutti.
我的网站是 https://www.danielemargutti.com
本软件受 MIT 许可证 许可。
关注我: