fix: keep key sorting under "Unicode JSON" format #158
This commit is contained in:
parent
3a799b7b4a
commit
bb4ab109e7
|
@ -3,6 +3,7 @@ package convutil
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"unicode"
|
"unicode"
|
||||||
"unicode/utf16"
|
"unicode/utf16"
|
||||||
|
@ -21,7 +22,7 @@ func (UnicodeJsonConvert) Decode(str string) (string, bool) {
|
||||||
(strings.HasPrefix(trimedStr, "[") && strings.HasSuffix(trimedStr, "]")) {
|
(strings.HasPrefix(trimedStr, "[") && strings.HasSuffix(trimedStr, "]")) {
|
||||||
var out bytes.Buffer
|
var out bytes.Buffer
|
||||||
if err := json.Indent(&out, []byte(trimedStr), "", " "); err == nil {
|
if err := json.Indent(&out, []byte(trimedStr), "", " "); err == nil {
|
||||||
if quoteStr, ok := UnquoteUnicodeJson([]byte(trimedStr)); ok {
|
if quoteStr, ok := UnquoteUnicodeJson(out.Bytes()); ok {
|
||||||
return string(quoteStr), true
|
return string(quoteStr), true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -50,9 +51,7 @@ func UnquoteUnicodeJson(s []byte) ([]byte, bool) {
|
||||||
if s[r+offset] == '"' && s[r+offset-1] != '\\' {
|
if s[r+offset] == '"' && s[r+offset-1] != '\\' {
|
||||||
offset += 1
|
offset += 1
|
||||||
if ub, ok := unquoteBytes(s[r : r+offset]); ok {
|
if ub, ok := unquoteBytes(s[r : r+offset]); ok {
|
||||||
unquoted.WriteByte('"')
|
unquoted.WriteString(strconv.Quote(string(ub)))
|
||||||
unquoted.Write(ub)
|
|
||||||
unquoted.WriteByte('"')
|
|
||||||
} else {
|
} else {
|
||||||
return nil, false
|
return nil, false
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue