2017-08-10 52 views
0

我得到这个JSON:Restsharp Classmember批注对JSON的C#映射

"history": { 
     "-Kr6ZcI0_SSeO0tRYGRe": { 
      "created_at": 1502291854572, 
      "id": "1307a006-d8a0-2f72-30bf-3a04410b8d1a", 
      "last_status": "", 
      "method_create": "createFlowjob", 
      "new_status": "Queued" 
     }, 
     "-Kr6Zci2Ts3ncYnfP2Cq": { 
      "created_at": 1502291856297, 
      "gateway_id": 127, 
      "id": "1307a006-d8a0-2f72-30bf-3a04410b8d1a", 
      "last_status": "Queued", 
      "method_create": "HTTP_POST - /flowjob/receive", 
      "new_status": "Pending" 
     }, 
     "-Kr6Zd11nYnMu2uLK7-1": { 
      "created_at": 1502291857577, 
      "gateway_id": 127, 
      "id": "1307a006-d8a0-2f72-30bf-3a04410b8d1a", 
      "last_status": "Pending", 
      "method_create": "HTTP_POST - /gateway/processor", 
      "new_status": "Running" 
     }, 
     "-Kr6ZlV7eD16nLI4FuGe": { 
      "created_at": 1502291892274, 
      "gateway_id": 127, 
      "id": "1307a006-d8a0-2f72-30bf-3a04410b8d1a", 
      "last_status": "Running", 
      "method_create": "HTTP_DELETE - /gateway/processor/:job_id", 
      "new_status": "Completed" 
     } 
    } 

的事情是我想永远不会被填补这个像这样

public class History 
    { 
     [JsonProperty("somerandomnumberidontknowbefore")] 
     [SerializeAs(Name = "somerandomnumberidontknowbefore")] 
     [DeserializeAs(Name = "somerandomnumberidontknowbefore")] 
     public Dictionary<string,HistoryItem> Items{ get; set; }   
    } 

public class HistoryItem 
    { 

     [JsonProperty("created_at")] 
     [SerializeAs(Name = "created_at")] 
     [DeserializeAs(Name = "created_at")] 
     public int CreatedAt { get; set; } 

     [JsonProperty("id")] 
     [SerializeAs(Name = "id")] 
     [DeserializeAs(Name = "id")] 
     public string Id { get; set; } 

     [JsonProperty("last_status")] 
     [SerializeAs(Name = "last_status")] 
     [DeserializeAs(Name = "last_status")] 
     public string LastSTatus { get; set; } 

     [JsonProperty("method_create")] 
     [SerializeAs(Name = "method_create")] 
     [DeserializeAs(Name = "method_create")] 
     public string MethodCreate { get; set; } 

     [JsonProperty("new_status")] 
     [SerializeAs(Name = "new_status")] 
     [DeserializeAs(Name = "new_status")] 
     public string NewStatus { get; set; } 
    } 

我的字典映射到C#类我不知道如何正确地将这个JSON映射到类。 Json到C#转换器给了我非常奇怪的结果,这没有任何意义。

有没有人知道如何实现一个json关键字的映射,它总是随机的,而且在运行时不知道?

回答

0

我不知道restsharp,但有了NewtonSoft,你可以使用动态如下:

using Newtonsoft.Json; 
using Newtonsoft.Json.Linq; 

dynamic result = JsonConvert.DeserializeObject<dynamic>(json); 

foreach (JProperty x in (JToken)result) 
{     
    Console.WriteLine("{0}:{1}", x.Name, x.Value.ToString());    
}