gopherjs - json/indent.go
1 package json
2
3 import "github.com/gopherjs/gopherjs/js"
4
5 type StringWriter interface {
6 WriteString(string) (int, error)
7 }
8
9 func Compact(dst StringWriter, src []byte) error {
10 return Indent(dst, src, "", "")
11 }
12
13 func Indent(dst StringWriter, src []byte, prefix, indent string) (err error) {
14 defer func() {
15 if e := recover(); e != nil {
16 if er, ok := e.(*js.Error); ok && er != nil {
17 err = er
18 } else {
19 panic(e)
20 }
21 }
22 }()
23 str := js.Global.Get("JSON").Call("stringify", js.Global.Get("JSON").Call("parse", string(src)), nil, indent)
24 if len(prefix) > 0 {
25 str = str.Call("replace", "\n", "\n"+prefix)
26 }
27 _, err = dst.WriteString(str.String())
28 return err
29 }