flatted

3.2.73.4.2
golang/README.md
+golang/README.mdNew file
+60
Index: package/golang/README.md
===================================================================
--- package/golang/README.md
+++ package/golang/README.md
@@ -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
+```