Open
Description
Cannot unmarshal null fields to UUID, even though I already uses ConfigCompatibleWithStandardLibrary
which ensures 100% compatibility.
It also fails with the NewDecoder.Decode function.
Sample Program:
package main
import (
"bytes"
"fmt"
"encoding/json"
"github.com/google/uuid"
jsoniterlib "github.com/json-iterator/go"
)
type TestStruct struct {
SomeUUID uuid.UUID `json:"someUUID"`
NilUUID uuid.UUID `json:"nilUUID"`
}
var jsoniter = jsoniterlib.ConfigCompatibleWithStandardLibrary
func main() {
fmt.Println("jsoniter fails to decode null field to UUID")
var err error
var test TestStruct
err = jsoniter.Unmarshal(bytes.NewBufferString(`{"someUUID":"fa0e715a-7234-4110-aed0-ecc3de305e62","nilUUID":null}`).Bytes(), &test)
fmt.Println(test)
fmt.Println(err)
fmt.Println("\nexpected results:")
var err2 error
var test2 TestStruct
err2 = json.Unmarshal(bytes.NewBufferString(`{"someUUID":"fa0e715a-7234-4110-aed0-ecc3de305e62","nilUUID":null}`).Bytes(), &test2)
fmt.Println(test2)
fmt.Println(err2)
}
Results:
jsoniter fails to decode null field to UUID
{fa0e715a-7234-4110-aed0-ecc3de305e62 00000000-0000-0000-0000-000000000000}
main.TestStruct.NilUUID: textUnmarshalerDecoder: invalid UUID length: 0, error found in #10 byte of ...|UUID":null}|..., bigger context ...|0e715a-7234-4110-aed0-ecc3de305e62","nilUUID":null}|...
expected results:
{fa0e715a-7234-4110-aed0-ecc3de305e62 00000000-0000-0000-0000-000000000000}
<nil>
Ran on golang 1.21.0
Metadata
Metadata
Assignees
Labels
No labels