mirror of
https://github.com/netbirdio/easyjson.git
synced 2026-05-22 18:44:42 -07:00
Add test cases for non-escaped mode of member names
This commit is contained in:
@@ -20,7 +20,9 @@ generate: build
|
||||
./tests/reference_to_pointer.go \
|
||||
./tests/html.go \
|
||||
./tests/unknown_fields.go \
|
||||
./tests/type_declaration.go
|
||||
./tests/type_declaration.go \
|
||||
./tests/members_escaped.go \
|
||||
./tests/members_unescaped.go \
|
||||
|
||||
bin/easyjson -all ./tests/data.go
|
||||
bin/easyjson -all ./tests/nothing.go
|
||||
@@ -38,6 +40,8 @@ generate: build
|
||||
bin/easyjson -disallow_unknown_fields ./tests/disallow_unknown.go
|
||||
bin/easyjson ./tests/unknown_fields.go
|
||||
bin/easyjson ./tests/type_declaration.go
|
||||
bin/easyjson ./tests/members_escaped.go
|
||||
bin/easyjson -disable_members_unescape ./tests/members_unescaped.go
|
||||
|
||||
test: generate
|
||||
go test \
|
||||
|
||||
@@ -57,6 +57,8 @@ Usage of easyjson:
|
||||
only generate stubs for marshaler/unmarshaler funcs
|
||||
-disallow_unknown_fields
|
||||
return error if some unknown field in json appeared
|
||||
-disable_members_unescape
|
||||
disable unescaping of \uXXXX string sequences in member names
|
||||
```
|
||||
|
||||
Using `-all` will generate marshalers/unmarshalers for all Go structs in the
|
||||
@@ -78,6 +80,14 @@ Additional option notes:
|
||||
|
||||
* `-build_tags` will add the specified build tags to generated Go sources.
|
||||
|
||||
## Structure json tag options
|
||||
|
||||
Besides standart json tag options like 'omitempty' the following are supported:
|
||||
|
||||
* 'noclone' - disables allocation and copying of string values, making them
|
||||
refer to original json buffer memory. This works great for short lived
|
||||
objects which are not hold in memory after decoding and immediate usage.
|
||||
|
||||
## Generated Marshaler/Unmarshaler Funcs
|
||||
|
||||
For Go struct types, easyjson generates the funcs `MarshalEasyJSON` /
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
package tests
|
||||
|
||||
//easyjson:json
|
||||
type MembersEscaped struct {
|
||||
A string `json:"漢語"`
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
package tests
|
||||
|
||||
import (
|
||||
"reflect"
|
||||
"testing"
|
||||
|
||||
"github.com/mailru/easyjson"
|
||||
)
|
||||
|
||||
func TestMembersEscaping(t *testing.T) {
|
||||
cases := []struct {
|
||||
data string
|
||||
esc MembersEscaped
|
||||
unesc MembersUnescaped
|
||||
}{
|
||||
{
|
||||
data: `{"漢語": "中国"}`,
|
||||
esc: MembersEscaped{A: "中国"},
|
||||
unesc: MembersUnescaped{A: "中国"},
|
||||
},
|
||||
{
|
||||
data: `{"漢語": "\u4e2D\u56fD"}`,
|
||||
esc: MembersEscaped{A: "中国"},
|
||||
unesc: MembersUnescaped{A: "中国"},
|
||||
},
|
||||
{
|
||||
data: `{"\u6f22\u8a9E": "中国"}`,
|
||||
esc: MembersEscaped{A: "中国"},
|
||||
unesc: MembersUnescaped{A: ""},
|
||||
},
|
||||
{
|
||||
data: `{"\u6f22\u8a9E": "\u4e2D\u56fD"}`,
|
||||
esc: MembersEscaped{A: "中国"},
|
||||
unesc: MembersUnescaped{A: ""},
|
||||
},
|
||||
}
|
||||
|
||||
for i, c := range cases {
|
||||
var esc MembersEscaped
|
||||
easyjson.Unmarshal([]byte(c.data), &esc)
|
||||
if !reflect.DeepEqual(esc, c.esc) {
|
||||
t.Errorf("[%d] TestMembersEscaping(): got=%+v, exp=%+v", i, esc, c.esc)
|
||||
}
|
||||
|
||||
var unesc MembersUnescaped
|
||||
easyjson.Unmarshal([]byte(c.data), &unesc)
|
||||
if !reflect.DeepEqual(unesc, c.unesc) {
|
||||
t.Errorf("[%d] TestMembersEscaping(): no-unescaping case: got=%+v, exp=%+v", i, esc, c.esc)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
package tests
|
||||
|
||||
//easyjson:json
|
||||
type MembersUnescaped struct {
|
||||
A string `json:"漢語"`
|
||||
}
|
||||
Reference in New Issue
Block a user