使用具有 $ 符号的变量反序列化 JSON



这是我传入的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场? 由于我不能在属性名称前面使用$ file,我应该选择哪种方式继续前进?

这是我的反序列化模型:

public class Event
{
public Schema schema { get; set; }
public List<object> values { get; set; }
public int? schemaRid { get; set; }
//public DateTime $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的属性修饰了属性,并将 JSON 文件中键的相应名称传递给其构造函数。这样做,我们可以使用我们希望对象具有的任何名称,而 JSON 文件可能包含名称以无效字符开头的键,用于在 C# 中开始变量的名称。

可以使用像这样的工具自动生成上述类。

最新更新