public static void Main(string[] args)
var options = new JsonSerializerOptions{Converters = { new StringConverter() }, PropertyNameCaseInsensitive = true, };
var jsonA = "{ \"something\": { \"id\": \"ex.GUID\" } }";
var a = JsonSerializer.Deserialize<RootObject>(jsonA, options);
Console.WriteLine(a.Something.Id);
var jsonB = "{ \"something\": { \"id\": 1 } }";
var b = JsonSerializer.Deserialize<RootObject>(jsonB, options);
Console.WriteLine(b.Something.Id);
public Something Something { get; set; }
public string Id { get; set; }
public class StringConverter : System.Text.Json.Serialization.JsonConverter<string>
public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
if (reader.TokenType == JsonTokenType.Number)
var stringValue = reader.GetInt32();
return stringValue.ToString();
else if (reader.TokenType == JsonTokenType.String)
return reader.GetString();
throw new System.Text.Json.JsonException();
public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
writer.WriteStringValue(value);