ARTICLE AD BOX
To do this, you need to use a custom converter. Something like this would work:
public class ObjectNativeTypeConverter : JsonConverter<object> { public override object? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) => reader.TokenType switch { JsonTokenType.True => true, JsonTokenType.False => false, JsonTokenType.Number when reader.TryGetInt64(out long l) => l, JsonTokenType.Number => reader.GetDouble(), JsonTokenType.String when reader.TryGetDateTime(out DateTime datetime) => datetime, JsonTokenType.String => reader.GetString()!, _ => JsonDocument.ParseValue(ref reader).RootElement.Clone() }; } public override void Write(Utf8JsonWriter writer, object value, JsonSerializerOptions options) { // An exercise for you if you need it throw new NotImplementedException(); } }(Note: this is taken almost verbatim from the official docs)
And use it like this:
var options = new JsonSerializerOptions(); options.Converters.Add(new ObjectNativeTypeConverter()); var obj = JsonSerializer.Deserialize<Dictionary<string, object>>(input, options);Explore related questions
See similar questions with these tags.
