我不知道如何JSON和C#的類型之間的匹配。但是,如果你要檢查是匹配合適的值的所有屬性在JSON,你可以做的Json Serialization Sttributes:
這裏我有C#類型:
[JsonObject(ItemRequired = Required.Always)]
public class Event
{
public string DataSource { get; set; }
public string LoadId { get; set; }
public string LoadName { get; set; }
public string MonitorId { get; set; }
public string MonitorName { get; set; }
public DateTimeOffset Time { get; set; }
public decimal Value { get; set; }
}
我飾那種類型與屬性[JsonObject(ItemRequired = Required.Always)]
從所有屬性要求從JSON文本中填充適當的屬性。
有三兩imporatnt件事:
- 如果你試圖反序列化不包含像事件類會拋出異常性質JSON文本。
- 如果JSON包含這些屬性,但不包含值,它將通過反序列化。
- 如果JSON文本包含與Event類相同的屬性,但也包含其他屬性,它仍然會通過反序列化。
下面是示例代碼:如果沒有JSON屬性匹配您的泛型類型
var message = @"{ 'DataSource':'SomeValue','LoadId':'100','LoadName':'TEST LOAD','MonitorId':'TEST MONITOR','MonitorName':'TEST MONITOR','Time':'2016-03-04T00:13:00','Value':0.0}";
try
{
var convertedObject = JsonConvert.DeserializeObject<Event>(message);
}
catch (Exception ex)
{
}
反序列化會不會引發錯誤,這反而只是創建一個空的C#對象 – KallDrexx