Tho*_*que 9 .net serialization json json.net
我需要使用Json.NET将一些实体类序列化为JSON.为了自定义属性的名称,我使用如下[JsonProperty]
属性:
[JsonProperty("lastName")]
public string LastName { get; set; }
Run Code Online (Sandbox Code Playgroud)
问题是,我不希望在我的实体中没有任何与JSON相关的属性......是否有办法以某种方式外化注释,以便它们不会使我的实体混乱?
使用XmlSerializer
,可以在XmlAttributeOverrides
课堂上轻松完成.Json.NET有类似的东西吗?
是的,您可以创建自定义合约解析程序并在JsonProperty
不使用属性的情况下自定义定义.示例如下:
class Person { public string First { get; set; } }
class PersonContractResolver : DefaultContractResolver
{
protected override JsonProperty CreateProperty(
MemberInfo member,
MemberSerialization memberSerialization)
{
var property = base.CreateProperty(member, memberSerialization);
if (member.DeclaringType == typeof(Person) && member.Name == "First")
{
property.PropertyName = "FirstName";
}
return property;
}
}
class Program
{
static void Main(string[] args)
{
var result = JsonConvert.SerializeObject(
new Person { First = "John" },
new JsonSerializerSettings
{
ContractResolver = new PersonContractResolver()
});
Console.WriteLine(result);
}
}
Run Code Online (Sandbox Code Playgroud)
此示例程序的输出如下:
// {"FirstName":"John"}
Run Code Online (Sandbox Code Playgroud)