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
+```