Skip to content

Commit 5049b7e

Browse files
committed
feat: add cli to test unmarshal/marshl json
1 parent 0912d56 commit 5049b7e

File tree

3 files changed

+54
-0
lines changed

3 files changed

+54
-0
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
*.dll
88
*.so
99
*.dylib
10+
/bin/
1011

1112
# Test binary, built with `go test -c`
1213
*.test

README.md

+19
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,21 @@
11
# orderedmap
2+
23
An alternative ordered map in Go with de/serializing from/to JSON.
4+
5+
## CLI for testing to deserialize JSON, then serialize with preserving the order
6+
7+
```
8+
$ ./bin/cli -data '{"s":"test","i":3,"a":[{"f":3.14},{"b":true}]}'
9+
{
10+
"s": "test",
11+
"i": 3,
12+
"a": [
13+
{
14+
"f": 3.14
15+
},
16+
{
17+
"b": true
18+
}
19+
]
20+
}
21+
```

cmd/cli/main.go

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package main
2+
3+
import (
4+
"encoding/json"
5+
"flag"
6+
"fmt"
7+
"log/slog"
8+
"os"
9+
10+
"github.com/kazamori/orderedmap"
11+
)
12+
13+
var (
14+
data = flag.String("data", "{}", "target json data")
15+
)
16+
17+
func main() {
18+
flag.Parse()
19+
20+
b := []byte(*data)
21+
var m orderedmap.OrderedMap[string, any]
22+
if err := json.Unmarshal(b, &m); err != nil {
23+
slog.Error("failed to unmarshal as json", "err", err)
24+
return
25+
}
26+
27+
// pretty-print
28+
b2, err := json.MarshalIndent(m, "", " ")
29+
if err != nil {
30+
slog.Error("pretty-print", "value", m, "err", err)
31+
return
32+
}
33+
fmt.Fprintln(os.Stderr, string(b2))
34+
}

0 commit comments

Comments
 (0)