generated from dellevin/template
1
This commit is contained in:
60
node_modules/flatted/golang/README.md
generated
vendored
Normal file
60
node_modules/flatted/golang/README.md
generated
vendored
Normal file
@@ -0,0 +1,60 @@
|
||||
# flatted (Go)
|
||||
|
||||
A super light and fast circular JSON parser.
|
||||
|
||||
## Usage
|
||||
|
||||
```go
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/WebReflection/flatted/golang/pkg/flatted"
|
||||
)
|
||||
|
||||
type Group struct {
|
||||
Name string `json:"name"`
|
||||
}
|
||||
|
||||
type User struct {
|
||||
Name string `json:"name"`
|
||||
Friend *User `json:"friend"`
|
||||
Group *Group `json:"group"`
|
||||
}
|
||||
|
||||
func main() {
|
||||
group := &Group{Name: "Developers"}
|
||||
alice := &User{Name: "Alice", Group: group}
|
||||
bob := &User{Name: "Bob", Group: group}
|
||||
|
||||
alice.Friend = bob
|
||||
bob.Friend = alice // Circular reference
|
||||
|
||||
// Stringify Alice
|
||||
s, _ := flatted.Stringify(alice)
|
||||
fmt.Println(s)
|
||||
// Output: [{"name":"Alice","friend":"1","group":"2"},{"name":"Bob","friend":"0","group":"2"},{"name":"Developers"}]
|
||||
|
||||
// Flattening in action:
|
||||
// Index "0" is Alice, Index "1" is Bob, Index "2" is the shared Group.
|
||||
|
||||
// Parse back into a generic map structure
|
||||
res, _ := flatted.Parse(s)
|
||||
aliceMap := res.(map[string]any)
|
||||
fmt.Println(aliceMap["name"]) // Alice
|
||||
}
|
||||
```
|
||||
|
||||
## CLI
|
||||
|
||||
Build the binary using the provided Makefile:
|
||||
|
||||
```bash
|
||||
make build
|
||||
```
|
||||
|
||||
Then use it to parse flatted JSON from stdin:
|
||||
|
||||
```bash
|
||||
echo '[{"a":"1"},"b"]' | ./flatted
|
||||
```
|
||||
Reference in New Issue
Block a user