Baike.dev
All toolsAI codingTrendingOpen sourceNewsSubmit
Log in
Back to tool/Back to issues
#703·go

The behavior of json.Unmarshal when encountering field type inconsistencies.

Author: ansionforCreated May 30, 2024Updated Jan 8, 2025
func TestJson(t *testing.T) {
    type info struct {
       Id int64 `json:"id"`
    }
    type test struct {
       Result []info `json:"result"`
    }
    r := `{"result":[{"id":"1"},{"id":"2"}]}`


    var res1 test
    var res2 test


    // use encoding/json
    json2.Unmarshal([]byte(r), &res1)

    // use json-iterator/go                 
    jsoniter.ConfigCompatibleWithStandardLibrary.Unmarshal([]byte(r), &res2)

    len1 := len(res1.Result)      // 2
    len2 := len(res2.Result)      // 1


    fmt.Println(len1, len2)
}

I want to know which handling behavior is more appropriate.

Source: json-iterator/go

View original on GitHubView discussion on GitHub