Ich habe mit dem Projekt gearbeitet, wo ich externe RESTful Service aufrufen muss, um einige Daten zu bekommen.Deserialize JSON String zu C# -Objekt mit newtonsoft
Das Problem, das ich hier gegenüberstelle, ist, die Antwort, die ich vom Service bekomme, ist auf unterschiedlichem Szenario unterschiedlich. Beispielsweise.
auf einem Szenario, ich bin unten Antwort bekommen
{
"id":3000056,
"posted_date":"2016-04-15T07:16:47+00:00",
"current_status":"initialized",
"customer":{
"name" : "George",
"lastName" : "Mike"
},
"application_address":{
"addressLine1" : "Lin1",
"addressLine2" : "Lin2",
}
}
Im anderen Szenario im unten Antwort bekommen
{
"id":3000057,
"posted_date":"2016-04-15T07:16:47+00:00",
"current_status":"initialized",
"customer":[],
"application_address":[]
}
Das Problem hier ist, ich habe unten Modell, und i‘ m deserialisieren es durch newtonsoft deseralization.
public class Response
{
[JsonProperty("id")]
public int Id { get; set; }
[JsonProperty("posted_date")]
public DateTime PostedDate { get; set; }
[JsonProperty("current_status")]
public string CurrentStatus { get; set; }
[JsonProperty("customer")]
public Customer Customer { get; set; }
[JsonProperty("application_address")]
public ApplicationAddress ApplicationAddress { get; set; }
}
public Class Customer
{
public string name { get; set; }
public string lastName { get; set; }
}
public classs ApplicationAddress
{
public string addreesLine1{ get; set; }
public string addreesLine1{ get; set; }
}
Für die erste Antwort wird es desrialize. Aber für die zweite Antwort wird die Antwort nicht deserialisiert, da die Antwort []
für Customer
und ApplicationAddrees
Objekt enthält. Beim Deserialisieren wird es als Array behandelt, aber eigentlich nicht.
Hinweis: Unter Code verwende ich für Deserializing. Antwort Antwort = JsonConvert.DeserializeObject (Ergebnis);
Gibt es irgendeine Konfiguration, die wir vor der Serialisierung durchführen können? Unterstützt newtonsoft diese Funktion?
Danke.
Können Sie bitte Ihre Deserialisierung Anruf teilen? –
Verwenden Sie für die verschiedenen Szenarien unterschiedliche Klassen, um zu deserialisieren. Das erste Beispiel verwendet die Klasse, die Sie haben, die zweite verwendet eine Klasse mit den Listeneigenschaften, List . Sie können eine Basisklasse für die gemeinsamen Eigenschaften verwenden. Ist es ein einzelner Endpunkt, den Sie für die verschiedenen Szenarien aufrufen? –
@TimBourguignon, ich habe die Frage mit Deserialisierungscode aktualisiert. – PaRsH