SwiftMsgPack 1.2.0

SwiftMsgPack 1.2.0

测试已测试
语言语言 SwiftSwift
许可 MIT
发布最后发布2020年11月
SPM支持Swift Package Manager

Daniele Margutti维护。



SwiftLocation

它就像 JSON,但更快!

Carthage compatible CI Status Version License Platform

这是什么?

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 许可证 许可。

关注我: