CSharp · Console
using System;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.Serialization;
using System.Text.Json;
using System.Text.Json.Serialization;
using Microsoft.AspNetCore.Mvc;
using System.Text.Encodings.Web;
using System.Text.Unicode;
public class Program {
public enum Operator {
[EnumMember(Value = "and")] And,
[EnumMember(Value = "or")] Or,
[EnumMember(Value = "not")] Not,
[EnumMember(Value = "none")] None,
[EnumMember(Value = "<=")] LessOrEqual,
[EnumMember(Value = "lesseq")] LessEq,
[EnumMember(Value = "<")] Less,
[EnumMember(Value = "=")] Equal,
[EnumMember(Value = ">=")] GreaterOrEqual,
[EnumMember(Value = ">")] Greater,
[EnumMember(Value = "!=")] NotEqual,
[EnumMember(Value = "in")] In,
[EnumMember(Value = "!in")] NotIn,
}
public class BasicJson {
public Operator Operator {get; init;}
}
public static void Main() {
JsonSerializerOptions SerializationOptions = new() {
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
// IgnoreNullValues applies to both serialization and deserialization.
// It is especially important for deserialization - it allows us to have
// non-nullable fields initialized to a default value and know that
// System.text.json won't assign over that default with null.
IgnoreNullValues = true,
Converters = {
new JsonStringEnumConverter()
},
};
var serialized = JsonSerializer.Deserialize<BasicJson>("{\"operator\": \"<=\"}", SerializationOptions);
Console.Write($"{serialized.Operator}");
}
}