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

标签 c# asp.net json jsonconvert

这是我传入的 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

关于c# - 使用带有 $ 符号的变量反序列化 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59359121/

相关文章:

asp.net - 所有嵌入式YouTube视频都立即开始播放

c# - 如何找出哪个程序集处理了请求

javascript - 如何通过json对象数组给嵌套对象赋值

c# - Pinvoke C# : delegated function cause crash

c# - 如何在 C# UWP 中暂停一个线程,同时继续其他线程

c# - 如何获取自定义用户控件的 "typeof"

javascript - 选择日期和来源最接近的对象

javascript - 如何将 JSON 动态插入到 Accordion 菜单中?

c# - 在哪里可以找到 TreeView 节点中的 Click 事件?

c# - SQLDependency_OnChange-Event 仅触发一次