使用带有 $ 符号的变量反序列化 JSON
DeSerialize JSON with variable having a $ sign
这是我传入的 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 字段?由于我不能使用属性名字前面的$字段,我应该选择哪种方式前进?
这是我要反序列化的模型:
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# 中启动变量名称。
上面的 类 可以使用这样的工具自动生成 one。
这是我传入的 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 字段?由于我不能使用属性名字前面的$字段,我应该选择哪种方式前进?
这是我要反序列化的模型:
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# 中启动变量名称。
上面的 类 可以使用这样的工具自动生成 one。