2017-08-10 1 views
0

bekam ich diesen json:Restsharp Classmember Annotations für Json zu C# Mapping

"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" 
     } 
    } 

Die Sache ist, ich auf diese aC# Klasse wie diese

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; } 
    } 

Mein Wörterbuch abbilden wollte wird nie gefüllt und Ich weiß nicht, wie dieser JSON der Klasse richtig zugeordnet wird. Json zu C# Converter gab mir sehr seltsame Ergebnisse, die keinen Sinn ergaben.

Kennt jemand hier, wie man eine Zuordnung eines json Schlüssels erzielt, der immer zufällig ist und vor Laufzeit nicht weiß?

Antwort

0

Ich weiß nicht über Restsharp, aber mit NewtonSoft können Sie eine Dynamik wie die folgenden verwenden;

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());    
}