它就像 JSON,但速度更快!
MessagePack 是一种高效的二进制序列化格式,它可以让你在多种语言之间交换数据,就像 JSON 一样,但它更快更小。 小整数被编码成单个字节,而典型的短字符串只需要在字符串本身之外再多一个字节。
你可以从主网站直接阅读更多关于 规范 的信息。
此外,它是纯 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 类型
String (字符串)
Data (数据)
Bool (布尔值)
nil (空值)
Int
& UInt
(UInt8
,Int8
,UInt16
,Int16
,UInt32
,Int32
,UInt64
,Int64
), Float
和 Double
(浮点数和双精度浮点数)Dictionaries
([AnyHashable:Any?]
) (字典)Array
([Any?]
) (数组)以下限制由 MsgPack 规范格式 指定
-(2^63)
到 (2^64)-1
(2^32)-1
(2^32)-1
(2^32)-1
(2^32)-1
你可以使用 CocoaPods, carthage 和 Swift 包管理器来安装 Swiftline
use_frameworks!
pod 'SwiftMsgPack'
github 'malcommac/SwiftMsgPack'
在你的 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 项目来运行测试。
SwiftLocation 目前由 Daniele Margutti 拥有和维护。
你可以在 Twitter 上关注我 @danielemargutti。
我的网站是 https://www.danielemargutti.com
本软件根据 MIT 许可证 授权。
关注我: