bitbucket.org/ai69/amoy@v0.2.3/json.go (about) 1 package amoy 2 3 import ( 4 "bytes" 5 "encoding/json" 6 "fmt" 7 "strings" 8 ) 9 10 var ( 11 emptyJSON = "{}" 12 ) 13 14 // PrintJSON outputs data in JSON with indent to console. 15 func PrintJSON(data interface{}) { 16 fmt.Println(convertJSON(data, 2)) 17 } 18 19 // PrintOneLineJSON outputs data in JSON in one line. 20 func PrintOneLineJSON(data interface{}) { 21 fmt.Println(convertJSON(data, 0)) 22 } 23 24 // ToJSON returns JSON string of data with indent. 25 func ToJSON(data interface{}) string { 26 return convertJSON(data, 2) 27 } 28 29 // ToOneLineJSON returns JSON string of data in one line. 30 func ToOneLineJSON(data interface{}) string { 31 return convertJSON(data, 0) 32 } 33 34 func convertJSON(data interface{}, indent int) string { 35 var bf bytes.Buffer 36 enc := json.NewEncoder(&bf) 37 if indent > 0 { 38 enc.SetIndent("", strings.Repeat(" ", indent)) 39 } 40 enc.SetEscapeHTML(false) 41 42 var res string 43 if err := enc.Encode(data); err != nil { 44 res = emptyJSON 45 } else { 46 res = strings.TrimSpace(bf.String()) 47 } 48 return res 49 }