fix: Fix problems with non support for multidimensional arrays and basic type pointer arrays (#778)

Co-authored-by: shaoqian <shaoqian.zhang@appshahe.com>
This commit is contained in:
skykiss
2021-06-23 10:58:01 +08:00
committed by GitHub
parent c9a2a60e28
commit 01c92a6bc5
2 changed files with 59 additions and 5 deletions

View File

@@ -3,6 +3,7 @@ package mapping
import (
"encoding/json"
"strconv"
"strings"
"testing"
"time"
@@ -2480,3 +2481,40 @@ func BenchmarkUnmarshal(b *testing.B) {
UnmarshalKey(data, &an)
}
}
func TestUnmarshalJsonReaderMultiArray(t *testing.T) {
payload := `{"a": "133", "b": [["add", "cccd"], ["eeee"]]}`
var res struct {
A string `json:"a"`
B [][]string `json:"b"`
}
reader := strings.NewReader(payload)
err := UnmarshalJsonReader(reader, &res)
assert.Nil(t, err)
assert.Equal(t, 2, len(res.B))
}
func TestUnmarshalJsonReaderPtrMultiArray(t *testing.T) {
payload := `{"a": "133", "b": [["add", "cccd"], ["eeee"]]}`
var res struct {
A string `json:"a"`
B [][]*string `json:"b"`
}
reader := strings.NewReader(payload)
err := UnmarshalJsonReader(reader, &res)
assert.Nil(t, err)
assert.Equal(t, 2, len(res.B))
assert.Equal(t, 2, len(res.B[0]))
}
func TestUnmarshalJsonReaderPtrArray(t *testing.T) {
payload := `{"a": "133", "b": ["add", "cccd", "eeee"]}`
var res struct {
A string `json:"a"`
B []*string `json:"b"`
}
reader := strings.NewReader(payload)
err := UnmarshalJsonReader(reader, &res)
assert.Nil(t, err)
assert.Equal(t, 3, len(res.B))
}