CPCCoder
## Breaking Changes in Default JSON Naming and DateTime Serialization The new DMVC version changes the default JSON serialization behavior in two areas. ### 1. JSON field naming The default naming convention now converts field names to lowercase. For example: ```json { "BigNumber": 123 } ``` may now be serialized as: ```json { "bignumber": 123 } ``` This is a breaking change for existing clients and tests that depend on the previous JSON field names. In some deserialization scenarios, the original field is not found and the target value remains unchanged. ### 2. DateTime serialization The JSON representation of `TDateTime` now depends more strongly on `JsonSerializationConfig.UseUtcTime` and the local system time zone. The same value may therefore be serialized either with `Z`: ```text 2026-07-29T12:00:00Z ``` or with a local UTC offset: ```text 2026-07-29T14:00:00+02:00 ``` This can break existing clients, snapshot tests, signatures, and integrations that rely on the previous representation. The behavior can technically be changed through global settings such as: ```pascal MVCNameCaseDefault := ncAsIs; JsonSerializationConfig.UseUtcTime := False; ``` However, this is not a practical migration strategy for applications that use DMVC in many existing projects. In our case, more than 140 projects would need to be changed individually. ### Expected behavior Existing applications should preserve the previous serialization behavior by default, or DMVC should provide a single, officially supported compatibility mode, for example: ```pascal MVCCompatibilityMode := mcmLegacy; ``` Alternatively, the legacy behavior could remain the default and the new behavior could be enabled explicitly. ### Impact This affects the JSON wire format without any changes in application code. Therefore, the change should either: - be treated as a breaking change requiring a major version increment, or - provide a global backward-compatibility mechanism for existing applications.