JSON.NET自定义属性序列化

JSON.NET自定义属性序列化,json,json.net,serialization,Json,Json.net,Serialization,我有一节课看起来像下面 public class Sample { public string schema { get; set; } public string version { get; set; } } 我要找的输出是 { $schema : "some schema", version : "1.1.1.1.1" } 我使用下面的代码来序列化 公共类SchemaSerializer:JsonConverter { 公共重写void Wri

我有一节课看起来像下面

public class Sample { 
    public string schema { get; set; } 
    public string version { get; set; } 
}
我要找的输出是

{
    $schema : "some schema", 
    version : "1.1.1.1.1" 
}
我使用下面的代码来序列化

公共类SchemaSerializer:JsonConverter
{
公共重写void WriteJson(JsonWriter编写器、对象值、JsonSerializer序列化器)
{
var schema=作为字符串的值;
writer.WriteStartObject();
writer.WritePropertyName(“$schema”);
serializer.Serialize(writer,schema);
writer.WriteEndObject();
}
公共重写对象ReadJson(JsonReader阅读器,类型objectType,对象existingValue,JsonSerializer序列化程序)
{
JObject jsonObject=JObject.Load(读卡器);
var properties=jsonObject.properties().ToList();
返回新模式
{
SchemaName=properties[0]。名称。替换(“$”,“”),
Value=(字符串)属性[0]。Value
};
}
公共覆盖布尔CanConvert(类型objectType)
{
返回typeof(Schema).IsAssignableFrom(objectType);
}
}
然而,这将产生以下输出

{
   schema : {$schema : "some schema" } , 
   version : "1.1.1.1.1"
}

如何解决这个问题

JsonProperty使用字符串属性名解决此问题

  [JsonProperty(PropertyName = "$schema")]
public string Schema { get; set; }