mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-10-31 18:02:25 -05:00 
			
		
		
		
	* 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>
		
			
				
	
	
		
			46 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # mapstructure [](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.
 |