BrianLov's picture
Upload folder using huggingface_hub (part 8)
9f91f81 verified
|
Raw
History Blame Contribute Delete
1.14 kB

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