You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I'm using System.Text.Json and I get an error The type 'MyId' is not a supported dictionary key using converter of type 'MyId+MyIdSystemTextJsonConverter'.
I can see two options, and maybe both would be useful
Have the generated converter classes defined as partial classes. This would allow me to extend in code in my class with the additional overrides I might want
[StronglyTypedId]
public partial struct MyId {
partial class MyIdSystemTextJsonConverter : JsonConverter<MyId>
{
/// <inheritdoc />
public override MyId ReadAsPropertyName(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) {
var value = reader.GetString();
return new MyId(Guid.Parse(value));
}
/// <inheritdoc />
public override void WriteAsPropertyName(Utf8JsonWriter writer, MyId value, JsonSerializerOptions options) {
writer.WriteStringValue(value.ToString());
}
}
}
Add (by default or by some additional config) the implementations of ReadAsPropertyName and WriteAsPropertyName
Currently I cannot add a second [System.Text.Json.Serialization.JsonConverter(typeof(MyMyIdConverter))] attribute, so I'm forced to use JSON serializer options whenever I want to deserialize.
If you agree this/these are something you'd like, I'd be happy to open a pull request
The text was updated successfully, but these errors were encountered:
The main idea is to make the library much more maintainable while also giving people a mechanism to customise the generated IDs as much as they like. In that PR I've made both of these changes, but you'll be able to completely customise the generated IDs too 🙂
I have a case where I want to use my strongly typed id as a dictionary key when deserializing from JSON.
I'm using
System.Text.Json
and I get an errorThe type 'MyId' is not a supported dictionary key using converter of type 'MyId+MyIdSystemTextJsonConverter'
.I can see two options, and maybe both would be useful
ReadAsPropertyName
andWriteAsPropertyName
Currently I cannot add a second
[System.Text.Json.Serialization.JsonConverter(typeof(MyMyIdConverter))]
attribute, so I'm forced to use JSON serializer options whenever I want to deserialize.If you agree this/these are something you'd like, I'd be happy to open a pull request
The text was updated successfully, but these errors were encountered: