mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2024-11-01 23:10:01 +00:00
555ea8edfb
* start with export/import code * messing about with decoding/encoding * some more fiddling * stuff is WORKING * working pretty alright! * go fmt * fix up tests, add docs * start backup/restore doc * tweaks * credits * update advancedVisibility settings * update bun library -> v1.0.4 Signed-off-by: kim (grufwub) <grufwub@gmail.com> * update oauth library -> v4.3.1-SSB Signed-off-by: kim (grufwub) <grufwub@gmail.com> * handle oauth token scope, fix user.SigninCount + token.UserID Signed-off-by: kim (grufwub) <grufwub@gmail.com> * update oauth library --> v4.3.2-SSB Signed-off-by: kim (grufwub) <grufwub@gmail.com> * update sqlite library -> v1.13.0 Signed-off-by: kim (grufwub) <grufwub@gmail.com> * review changes * start with export/import code * messing about with decoding/encoding * some more fiddling * stuff is WORKING * working pretty alright! * go fmt * fix up tests, add docs * start backup/restore doc * tweaks * credits * update advancedVisibility settings * review changes Co-authored-by: kim (grufwub) <grufwub@gmail.com> Co-authored-by: kim <89579420+NyaaaWhatsUpDoc@users.noreply.github.com>
47 lines
1.6 KiB
Markdown
47 lines
1.6 KiB
Markdown
# mapstructure [![Godoc](https://godoc.org/github.com/mitchellh/mapstructure?status.svg)](https://godoc.org/github.com/mitchellh/mapstructure)
|
|
|
|
mapstructure is a Go library for decoding generic map values to structures
|
|
and vice versa, while providing helpful error handling.
|
|
|
|
This library is most useful when decoding values from some data stream (JSON,
|
|
Gob, etc.) where you don't _quite_ know the structure of the underlying data
|
|
until you read a part of it. You can therefore read a `map[string]interface{}`
|
|
and use this library to decode it into the proper underlying native Go
|
|
structure.
|
|
|
|
## Installation
|
|
|
|
Standard `go get`:
|
|
|
|
```
|
|
$ go get github.com/mitchellh/mapstructure
|
|
```
|
|
|
|
## Usage & Example
|
|
|
|
For usage and examples see the [Godoc](http://godoc.org/github.com/mitchellh/mapstructure).
|
|
|
|
The `Decode` function has examples associated with it there.
|
|
|
|
## But Why?!
|
|
|
|
Go offers fantastic standard libraries for decoding formats such as JSON.
|
|
The standard method is to have a struct pre-created, and populate that struct
|
|
from the bytes of the encoded format. This is great, but the problem is if
|
|
you have configuration or an encoding that changes slightly depending on
|
|
specific fields. For example, consider this JSON:
|
|
|
|
```json
|
|
{
|
|
"type": "person",
|
|
"name": "Mitchell"
|
|
}
|
|
```
|
|
|
|
Perhaps we can't populate a specific structure without first reading
|
|
the "type" field from the JSON. We could always do two passes over the
|
|
decoding of the JSON (reading the "type" first, and the rest later).
|
|
However, it is much simpler to just decode this into a `map[string]interface{}`
|
|
structure, read the "type" key, then use something like this library
|
|
to decode it into the proper structure.
|