Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/2tvenom/cbor
Golang library for working with cbor binary format
https://github.com/2tvenom/cbor
Last synced: about 1 month ago
JSON representation
Golang library for working with cbor binary format
- Host: GitHub
- URL: https://github.com/2tvenom/cbor
- Owner: 2tvenom
- License: wtfpl
- Created: 2014-03-16T17:45:58.000Z (almost 11 years ago)
- Default Branch: master
- Last Pushed: 2018-02-09T16:44:40.000Z (almost 7 years ago)
- Last Synced: 2024-07-05T14:54:05.529Z (6 months ago)
- Language: Go
- Size: 15.6 KB
- Stars: 61
- Watchers: 5
- Forks: 12
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# CBOR encoder for Go
Decoder/encoder from Go data to CBOR binary string. This code has been developed and maintained by Ven at March 2014.
CBOR is an object representation format defined by the [IETF](http://ietf.org).
The [specification](http://tools.ietf.org/html/rfc7049)
has recently been approved as an IETF Standards-Track specification
and has been published as RFC 7049.## Usage
```go
package mainimport (
"fmt"
"cbor"
"bytes"
)
//custom struct
type Vector struct {
X, Y, Z int
Range []Range
Label string
}type Range struct {
Length int
Align float32
}func main() {
v := &Vector {
X: 10,
Y: 15,
Z: 100,
Range: []Range{
Range {1,10},
Range {223432423,30},
Range {3,41.5},
Range {174,55555.2},
},
Label: "HoHoHo",
}//create encoder and marshal
var buffTest bytes.Buffer
encoder := cbor.NewEncoder(&buffTest)
ok, error := encoder.Marshal(v)
//check binary string
if !ok {
fmt.Errorf("Error decoding %s", error)
} else {
fmt.Printf("Variable Hex = % x\n", buffTest.Bytes())
fmt.Printf("Variable = %v\n", buffTest.Bytes())
}
fmt.Printf("-----------------\n")//unmarshal binary string to new struct
var vd Vector
ok, err := encoder.Unmarshal(buffTest.Bytes(), &vd)if !ok {
fmt.Printf("Error Unmarshal %s", err)
return
}
//output
fmt.Printf("%v", vd)
}
```## Compatibility
Checked with [PHP extension](https://github.com/2tvenom/CBOREncode) in encode and decode
## Known issues
- Not support tags. 6 major type *(in future)*
- Not support 16 floats encoding
- Not decode nil (null) vars
- Encode does't support indefinite-length values.