Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/Flight-School/MessagePack

A MessagePack encoder and decoder for Codable types
https://github.com/Flight-School/MessagePack

codable messagepack swift

Last synced: about 2 months ago
JSON representation

A MessagePack encoder and decoder for Codable types

Awesome Lists containing this project

README

        

# MessagePack

[![Build Status][build status badge]][build status]

A [MessagePack](https://msgpack.org/) encoder and decoder for `Codable` types.

This functionality is discussed in Chapter 7 of
[Flight School Guide to Swift Codable](https://flight.school/books/codable).

## Requirements

- Swift 4.2+

## Usage

### Encoding Messages

```swift
import MessagePack

let encoder = MessagePackEncoder()
let value = try! encoder.encode(["a": 1, "b": 2, "c": 3])
// [0x83, 0xA1, 0x62, 0x02, 0xA1, 0x61, 0x01, 0xA1, 0x63, 0x03]
```

### Decoding Messages

```swift
import MessagePack

let decoder = MessagePackDecoder()
let data = Data(bytes: [0xCB, 0x40, 0x09, 0x21, 0xF9, 0xF0, 0x1B, 0x86, 0x6E])
let value = try! decoder.decode(Double.self, from: data)
// 3.14159
```

## Installation

### Swift Package Manager

Add the MessagePack package to your target dependencies in `Package.swift`:

```swift
import PackageDescription

let package = Package(
name: "YourProject",
dependencies: [
.package(
url: "https://github.com/Flight-School/MessagePack",
from: "1.2.3"
),
]
)
```

Then run the `swift build` command to build your project.

### CocoaPods

You can install `MessagePack` via CocoaPods,
by adding the following line to your `Podfile`:

```ruby
pod 'MessagePack-FlightSchool', '~> 1.2.4'
```

Run the `pod install` command to download the library
and integrate it into your Xcode project.

> **Note**
> The module name for this library is "MessagePack" ---
> that is, to use it, you add `import MessagePack` to the top of your Swift code
> just as you would by any other installation method.
> The pod is called "MessagePack-FlightSchool"
> because there's an existing pod with the name "MessagePack".

## License

MIT

## Contact

Mattt ([@mattt](https://twitter.com/mattt))

[build status]: https://github.com/Flight-School/MessagePack/actions?query=workflow%3ACI
[build status badge]: https://github.com/Flight-School/MessagePack/workflows/CI/badge.svg