@@ -497,6 +497,26 @@ module NonStruct =
497497 JsonSerializer.Serialize({ incX = 1 ; incY = " a" }, dontIncludeRecordPropertiesOptions)
498498 Assert.Equal( """ {"incX":1,"incY":"a","incZ":42}""" , actual)
499499
500+ type OverrideMembersRecord = { x: int ; y: string }
501+
502+ let overrideMembersOptions =
503+ JsonFSharpOptions()
504+ .WithOverrides( fun o ->
505+ dict [ typeof< OverrideMembersRecord>, o.WithOverrideMembers( dict [ " x" , [ JsonNameAttribute( " z" ) ] ]) ]
506+ )
507+ .ToJsonSerializerOptions()
508+
509+ [<Fact>]
510+ let ``serialize with OverrideMembers`` () =
511+ let actual = JsonSerializer.Serialize({ x = 1 ; y = " b" }, overrideMembersOptions)
512+ Assert.Equal( """ {"z":1,"y":"b"}""" , actual)
513+
514+ [<Fact>]
515+ let ``deserialize with OverrideMembers`` () =
516+ let actual =
517+ JsonSerializer.Deserialize< OverrideMembersRecord>( """ {"z":1,"y":"b"}""" , overrideMembersOptions)
518+ Assert.Equal({ x = 1 ; y = " b" }, actual)
519+
500520module Struct =
501521
502522 [<Struct; JsonFSharpConverter>]
@@ -943,3 +963,24 @@ module Struct =
943963 let actual =
944964 JsonSerializer.Serialize({ incX = 1 ; incY = " a" }, dontIncludeRecordPropertiesOptions)
945965 Assert.Equal( """ {"incX":1,"incY":"a","incZ":42}""" , actual)
966+
967+ [<Struct>]
968+ type OverrideMembersRecord = { x: int ; y: string }
969+
970+ let overrideMembersOptions =
971+ JsonFSharpOptions()
972+ .WithOverrides( fun o ->
973+ dict [ typeof< OverrideMembersRecord>, o.WithOverrideMembers( dict [ " x" , [ JsonNameAttribute( " z" ) ] ]) ]
974+ )
975+ .ToJsonSerializerOptions()
976+
977+ [<Fact>]
978+ let ``serialize with OverrideMembers`` () =
979+ let actual = JsonSerializer.Serialize({ x = 1 ; y = " b" }, overrideMembersOptions)
980+ Assert.Equal( """ {"z":1,"y":"b"}""" , actual)
981+
982+ [<Fact>]
983+ let ``deserialize with OverrideMembers`` () =
984+ let actual =
985+ JsonSerializer.Deserialize< OverrideMembersRecord>( """ {"z":1,"y":"b"}""" , overrideMembersOptions)
986+ Assert.Equal({ x = 1 ; y = " b" }, actual)
0 commit comments