do not set nil to Locale field
This commit is contained in:
parent
bc1fbf5eaa
commit
ca83a6032a
2 changed files with 6 additions and 7 deletions
|
@ -77,6 +77,10 @@ func (l *Locale) MarshalJSON() ([]byte, error) {
|
|||
return json.Marshal(tag)
|
||||
}
|
||||
|
||||
// UnmarshalJSON implements json.Unmarshaler.
|
||||
// When [language.ValueError] is encountered, the containing tag will be set
|
||||
// to an empty value (language "und") and no error will be returned.
|
||||
// This state can be checked with the `l.Tag().IsRoot()` method.
|
||||
func (l *Locale) UnmarshalJSON(data []byte) error {
|
||||
err := json.Unmarshal(data, &l.tag)
|
||||
if err == nil {
|
||||
|
@ -86,6 +90,7 @@ func (l *Locale) UnmarshalJSON(data []byte) error {
|
|||
// catch "well-formed but unknown" errors
|
||||
var target language.ValueError
|
||||
if errors.As(err, &target) {
|
||||
l.tag = language.Tag{}
|
||||
return nil
|
||||
}
|
||||
return err
|
||||
|
|
|
@ -41,13 +41,7 @@ func (u *UserInfo) MarshalJSON() ([]byte, error) {
|
|||
}
|
||||
|
||||
func (u *UserInfo) UnmarshalJSON(data []byte) error {
|
||||
if err := unmarshalJSONMulti(data, (*uiAlias)(u), &u.Claims); err != nil {
|
||||
return err
|
||||
}
|
||||
if u.Locale != nil && u.Locale.tag.IsRoot() {
|
||||
u.Locale = nil
|
||||
}
|
||||
return nil
|
||||
return unmarshalJSONMulti(data, (*uiAlias)(u), &u.Claims)
|
||||
}
|
||||
|
||||
type UserInfoProfile struct {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue