Description
Features: - Uses the fastest router: Julien Schmidt's httprouter - Works with json, msgpack, and multi-part forms - Handles all standard types for GetParams - Handler methods like MakeParsedReq() for httprouter use - Imbue and Permit helper methods - GetParams() parses parameters only once
go-parameters alternatives and similar packages
Based on the "JSON" category.
Alternatively, view go-parameters alternatives based on common mentions on social networks and blogs.
-
jsonparser
One of the fastest alternative JSON parser for Go that does not require schema -
fastjson
Fast JSON parser and validator for Go. No custom structs, no code generation, no reflection -
jsondiff
Compute the diff between two JSON documents as a series of RFC6902 (JSON Patch) operations -
marshmallow
Marshmallow provides a flexible and performant JSON unmarshalling in Go. It specializes in dealing with unstructured struct - when some fields are known and some aren't, with zero performance overhead nor extra coding needed. -
JSON-to-Proto
convert JSON to Protocol Buffers online in your browser instantly -
ujson
µjson - A fast and minimal JSON parser and transformer that works on unstructured JSON -
ask
A Go package that provides a simple way of accessing nested properties in maps and slices. -
mapslice-json
Go MapSlice for ordered marshal/ unmarshal of maps in JSON -
go-jsonerror
Small package which wraps error responses to follow jsonapi.org -
epoch
Contains primitives for marshaling/unmarshaling Unix timestamp/epoch to/from built-in time.Time type in JSON -
Better Parsing of Unstructured JSON in Go
An error propagating JSON parsing library for Go -
omg.jsonparser
The simple JSON parser with validation by condition -
JSONcJSON
JSONC (json with comments) to JSON translator for Golang. -
jsonToStruct
Golang code generator for creating struct from json. -
jsonhandlers
JSON library to expose simple handlers that lets you easily read and write json from various sources.
WorkOS - The modern identity platform for B2B SaaS
Do you think we are missing an alternative of go-parameters or a related project?
README
go-parameters
Parameter multi-tool that parses json, msg pack, or multi-part form data into a parameter object.
Table of Contents
- Installation
- Documentation
- Examples & Tests
- Benchmarks
- Code Standards
- Usage
- Maintainers
- Contributing
- License
Installation
go-parameters requires a supported release of Go. ```shell script go get -u github.com/mrz1836/go-parameters
<br/>
## Documentation
View the generated [documentation](https://pkg.go.dev/github.com/mrz1836/go-parameters)
[![GoDoc](https://godoc.org/github.com/mrz1836/go-parameters?status.svg&style=flat)](https://pkg.go.dev/github.com/mrz1836/go-parameters)
### Features
- Uses the fastest router: Julien Schmidt's [httprouter](https://github.com/julienschmidt/httprouter)
- Works with `json`, `msgpack`, and `multi-part` forms
- Handles all standard types for `GetParams`
- Handler methods like `MakeParsedReq()` for `httprouter` use
- `Imbue` and `Permit` helper methods
- `GetParams()` parses parameters only once
<details>
<summary><strong><code>Package Dependencies</code></strong></summary>
<br/>
- Gorilla's [mux](https://github.com/gorilla/mux) package.
- Julien Schmidt's [httprouter](https://github.com/julienschmidt/httprouter) package.
- Ugorji's [go codec](https://github.com/ugorji/go) package.
</details>
<details>
<summary><strong><code>Library Deployment</code></strong></summary>
<br/>
[goreleaser](https://github.com/goreleaser/goreleaser) for easy binary or library deployment to Github and can be installed via: `brew install goreleaser`.
The [.goreleaser.yml](.goreleaser.yml) file is used to configure [goreleaser](https://github.com/goreleaser/goreleaser).
Use `make release-snap` to create a snapshot version of the release, and finally `make release` to ship to production.
</details>
<details>
<summary><strong><code>Makefile Commands</code></strong></summary>
<br/>
View all `makefile` commands
```shell script
make help
List of all current commands:
all Runs multiple commands
clean Remove previous builds and any test cache data
clean-mods Remove all the Go mod cache
coverage Shows the test coverage
godocs Sync the latest tag with GoDocs
help Show this help message
install Install the application
install-go Install the application (Using Native Go)
lint Run the Go lint application
release Full production release (creates release in Github)
release Runs common.release then runs godocs
release-snap Test the full release (build binaries)
release-test Full production test release (everything except deploy)
replace-version Replaces the version in HTML/JS (pre-deploy)
run-examples Runs all the examples
tag Generate a new tag and push (tag version=0.0.0)
tag-remove Remove a tag if found (tag-remove version=0.0.0)
tag-update Update an existing tag to current commit (tag-update version=0.0.0)
test Runs vet, lint and ALL tests
test-short Runs vet, lint and tests (excludes integration tests)
test-travis Runs all tests via Travis (also exports coverage)
test-travis-short Runs unit tests via Travis (also exports coverage)
uninstall Uninstall the application (and remove files)
vet Run the Go vet application
Examples & Tests
All unit tests and [examples](examples/examples.go) run via Travis CI and uses Go version 1.15.x. View the [deployment configuration file](.travis.yml).
Run all tests (including integration tests) ```shell script make test
Run tests (excluding integration tests)
```shell script
make test-short
Benchmarks
Run the Go benchmarks: ```shell script make bench
<br/>
## Code Standards
Read more about this Go project's [code standards](CODE_STANDARDS.md).
<br/>
## Usage
View the [examples](examples/examples.go)
Basic implementation:
```go
package main
import (
"fmt"
"log"
"net/http"
"github.com/julienschmidt/httprouter"
"github.com/mrz1836/go-parameters"
)
func Hello(w http.ResponseWriter, req *http.Request) {
params := parameters.GetParams(req)
name, _ := params.GetStringOk("name")
_, _ = fmt.Fprintf(w, `{"hello":"%s"}`, name)
}
func main() {
router := httprouter.New()
router.GET("/hello/:name", parameters.GeneralJSONResponse(Hello))
log.Fatal(http.ListenAndServe(":8080", router))
}
Maintainers
MrZ | kayleg |
Contributing
View the [contributing guidelines](CONTRIBUTING.md) and please follow the [code of conduct](CODE_OF_CONDUCT.md).
How can I help?
All kinds of contributions are welcome :raised_hands:! The most basic way to show your support is to star :star2: the project, or to raise issues :speech_balloon:. You can also support this project by becoming a sponsor on GitHub :clap: or by making a bitcoin donation to ensure this journey continues indefinitely! :rocket:
License
*Note that all licence references and agreements mentioned in the go-parameters README section above
are relevant to that project's source code only.