Home > Article > Backend Development > How to Achieve Case-Sensitive JSON Unmarshal in Go?
Case-Sensitive JSON Unmarshal in Go
The json.Unmarshal function in Go provides a way to deserialize JSON data into a struct. By default, Unmarshal performs case-insensitive matching between the JSON keys and the struct field names or tags. However, there may be cases where it is desirable to have case-sensitive matching.
Problem
Suppose you receive JSON data with tags such as "e" and "E". You want to unmarshal the object with tag "e" and ignore the one with "E". With the default case-insensitive matching, Unmarshal will accept both tags and unmarshal the struct accordingly.
Solution
Unfortunately, the standard json library does not currently support case-sensitive matching for Unmarshal. According to the official documentation:
To unmarshal JSON into a struct, Unmarshal matches incoming object keys to the keys used by Marshal (either the struct field name or its tag), preferring an exact match but also accepting a case-insensitive match.
Therefore, there is no way to disable case-insensitive matching using the standard json library.
The above is the detailed content of How to Achieve Case-Sensitive JSON Unmarshal in Go?. For more information, please follow other related articles on the PHP Chinese website!