(data []byte)
| 201 | } |
| 202 | |
| 203 | func (l *LegacyOverrides) UnmarshalJSON(data []byte) error { |
| 204 | type plain LegacyOverrides |
| 205 | if err := json.Unmarshal(data, (*plain)(l)); err != nil { |
| 206 | return err |
| 207 | } |
| 208 | |
| 209 | var raw map[string]json.RawMessage |
| 210 | if err := json.Unmarshal(data, &raw); err != nil { |
| 211 | return err |
| 212 | } |
| 213 | |
| 214 | for key := range knownLegacyOverridesJSONFields() { |
| 215 | delete(raw, key) |
| 216 | } |
| 217 | if len(raw) == 0 { |
| 218 | // No extension keys in this payload; clear any stale Extensions from a prior decode. |
| 219 | l.Extensions = nil |
| 220 | return nil |
| 221 | } |
| 222 | |
| 223 | l.Extensions = make(map[string]any, len(raw)) |
| 224 | for k, v := range raw { |
| 225 | var val any |
| 226 | if err := json.Unmarshal(v, &val); err != nil { |
| 227 | return err |
| 228 | } |
| 229 | l.Extensions[k] = val |
| 230 | } |
| 231 | |
| 232 | // Convert flat legacy keys to typed instances; processExtensions must not be called here |
| 233 | // as it expects nested keys (e.g. "my_ext"), not flat legacy keys (e.g. "my_ext_field"). |
| 234 | return processLegacyExtensions(l) |
| 235 | } |
| 236 | |
| 237 | func (l LegacyOverrides) MarshalJSON() ([]byte, error) { |
| 238 | type plain LegacyOverrides |
nothing calls this directly
no test coverage detected