generated from dellevin/template
1.1 KiB
1.1 KiB
flatted (Go)
A super light and fast circular JSON parser.
Usage
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:
make build
Then use it to parse flatted JSON from stdin:
echo '[{"a":"1"},"b"]' | ./flatted