initial go implementation
This commit is contained in:
31
internal/utils/format/json.go
Normal file
31
internal/utils/format/json.go
Normal file
@@ -0,0 +1,31 @@
|
||||
package format
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
)
|
||||
|
||||
func FormatJSON(input string) string {
|
||||
var data any
|
||||
if err := json.Unmarshal([]byte(input), &data); err != nil {
|
||||
var out bytes.Buffer
|
||||
if err := json.Indent(&out, []byte(input), "", " "); err == nil {
|
||||
return out.String()
|
||||
}
|
||||
return input
|
||||
}
|
||||
|
||||
var out bytes.Buffer
|
||||
encoder := json.NewEncoder(&out)
|
||||
encoder.SetEscapeHTML(false)
|
||||
encoder.SetIndent("", " ")
|
||||
if err := encoder.Encode(data); err != nil {
|
||||
return input
|
||||
}
|
||||
|
||||
formatted := out.String()
|
||||
if len(formatted) > 0 && formatted[len(formatted)-1] == '\n' {
|
||||
formatted = formatted[:len(formatted)-1]
|
||||
}
|
||||
return formatted
|
||||
}
|
||||
Reference in New Issue
Block a user