C# 使用带有$符号的变量反序列化JSON

C# 使用带有$符号的变量反序列化JSON,c#,asp.net,json,jsonconvert,C#,Asp.net,Json,Jsonconvert,这是我传入的JSON数据包: { "schema":{ "rid":0, "$esn":"eventhub1", "properties":[ { "name":"deviceId", "type":"String" }, { "name":"product", "type":"String"

这是我传入的JSON数据包:

{
   "schema":{
      "rid":0,
      "$esn":"eventhub1",
      "properties":[
         {
            "name":"deviceId",
            "type":"String"
         },
         {
            "name":"product",
            "type":"String"
         },
         {
            "name":"data.Temperature",
            "type":"Double"
         },
         {
            "name":"data.Humidity",
            "type":"Double"
         },
         {
            "name":"Diagnostic-Id",
            "type":"String"
         }
      ]
   },
   "$ts":"2019-12-16T14:34:10.159Z",
   "values":[
      "xxxx",
      "testProduct",
      27.399,
      15.247,
      "xxxxxx"
   ]
}
我怎样才能取消$ts字段的序列号?既然我不能使用财产名称前面的$field,我应该选择哪种方式前进

这是我要反序列化的模型:

public class Event
    {
        public Schema schema { get; set; }
        public List<object> values { get; set; }
        public int? schemaRid { get; set; }
        //public DateTime $ts { get; set; }
    }
公共类事件
{
公共架构{get;set;}
公共列表值{get;set;}
公共int?schemad{get;set;}
//公共日期时间$ts{get;set;}
}

您可以尝试使用以下类:

public class Property
{

    [JsonProperty("name")]
    public string Name { get; set; }

    [JsonProperty("type")]
    public string Type { get; set; }
}

public class Schema
{

    [JsonProperty("rid")]
    public int Rid { get; set; }

    [JsonProperty("$esn")]
    public string Esn { get; set; }

    [JsonProperty("properties")]
    public IList<Property> Properties { get; set; }
}

public class Example
{

    [JsonProperty("schema")]
    public Schema Schema { get; set; }

    [JsonProperty("$ts")]
    public DateTime Ts { get; set; }

    [JsonProperty("values")]
    public IList<object> Values { get; set; }
}
公共类属性
{
[JsonProperty(“名称”)]
公共字符串名称{get;set;}
[JsonProperty(“类型”)]
公共字符串类型{get;set;}
}
公共类模式
{
[JsonProperty(“rid”)]
公共int Rid{get;set;}
[JsonProperty(“$esn”)]
公共字符串Esn{get;set;}
[JsonProperty(“属性”)]
公共IList属性{get;set;}
}
公开课范例
{
[JsonProperty(“模式”)]
公共架构{get;set;}
[JsonProperty(“$ts”)]
公共日期时间{get;set;}
[JsonProperty(“值”)]
公共IList值{get;set;}
}
本质上,我们使用名为
JsonProperty
的属性来修饰属性,该属性将JSON文件中键的对应名称传递给其构造函数。这样,我们可以使用我们希望对象具有的任何名称,而JSON文件可能包含名称以无效字符开头的键,用于在C#中启动变量的名称


上面的类可以使用这样的工具自动生成

您正在使用JSON.NET吗?在这种情况下,请查看该属性。您可以尝试将[JsonProperty(“$esn”)]属性添加到架构类中的相应属性。这确实是VS:@JoelWiklund中的一个简洁扩展。VisualStudio也为您提供了这样的功能。但是,我已经使用过我提到的工具好几次了,这是我在类似情况下想到的第一个工具:)