Spaces:
Runtime error
Runtime error
| # 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 | |
| ``` | |