C# 使用带有$符号的变量反序列化JSON
这是我传入的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"
{
"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也为您提供了这样的功能。但是,我已经使用过我提到的工具好几次了,这是我在类似情况下想到的第一个工具:)