Ich habe einige JSON, die in zwei verschiedenen Formaten kommen kann. Manchmal ist der location
Wert eine Zeichenfolge und manchmal ist es ein Objekt. Dies ist ein Beispiel des ersten Formats:JSON-Wert ist manchmal eine Zeichenfolge und manchmal ein Objekt
{
"result": [
{
"upon_approval": "Proceed to Next Task",
"location": "",
"expected_start": ""
}
]
}
Klassendefinitionen für diese:
public class Result
{
public string upon_approval { get; set; }
public string location { get; set; }
public string expected_start { get; set; }
}
public class RootObject
{
public List<Result> result { get; set; }
}
Hier ist die JSON in dem zweiten Format:
{
"result": [
{
"upon_approval": "Proceed to Next Task",
"location": {
"display_value": "Corp-HQR",
"link": "https://satellite.service-now.com/api/now/table/cmn_location/4a2cf91b13f2de00322dd4a76144b090"
},
"expected_start": ""
}
]
}
Klassendefinitionen für diese:
public class Location
{
public string display_value { get; set; }
public string link { get; set; }
}
public class Result
{
public string upon_approval { get; set; }
public Location location { get; set; }
public string expected_start { get; set; }
}
public class RootObject
{
public List<Result> result { get; set; }
}
Wenn es Rializing, bekomme ich Fehler, wenn das JSON-Format nicht mit meinen Klassen übereinstimmt, aber ich weiß nicht im Voraus, welche Klassen verwendet werden, weil sich das JSON-Format ändert. Wie kann ich also diese beiden JSON-Formate dynamisch in einen Klassensatz deserialisieren?
Dies ist, wie ich jetzt Deserialisieren:
JavaScriptSerializer ser = new JavaScriptSerializer();
ser.MaxJsonLength = 2147483647;
RootObject ro = ser.Deserialize<RootObject>(responseValue);
Kann Ihr "Ergebnis" -Array beide enthalten? – Eser
@Eser Nein ich kann nur eine Klassendefinition von ihnen einschließen, aber JSON-Antwort hat entweder Zeichenfolge oder Klasse. Also weiß ich nicht, wie ich diese Zeichenfolgenwerte ignorieren kann. –
[This] (http://stackoverflow.com/questions/22052430/how-to-handle-json-that-returns-both-a-string-and-a-string-array) kann Ihnen einen Hinweis geben .. .. – Eser