ich an eine API bin Entsendung, die zurückkehren kann entweder 1 der folgenden zwei Formate von JSON-Strings:Eine bessere Möglichkeit, JSON zu deserialisieren?
{
"MessageType": 6,
"Message": "Unable to SAVE new record. Invalid posted data."
}
oder
{
"Model": {
"Id": "1-6Q0RZ9",
...
},
"ResponseResult": {
"MessageType": 10,
"Message": "Successfully saved, Record Id = 1-6Q0RZ9"
}
}
Ich brauche die Ergebnisse von Message abrufen und haben versucht, alle, wenn Bedingung, die ich mir vorstellen kann, um die Ergebnisse zu lesen, da die Syntax oder das Abrufen des Schlüssel: Wert für jede JSON-Zeichenfolge unterschiedlich ist und wenn keine anderen Flags das eine oder das andere auslösen. Also der Code, den ich verwendete, ist:
string result = eml.PostData("API/Save", dataJSON.ToString());
var returnresult = new JavaScriptSerializer().Deserialize<dynamic>(result);
try {
var responseresults = returnresult["ResponseResult"];
rr = responseresults["MessageType"];
rrtxt = responseresults["Message"];
} catch (Exception ex) {
rr = returnresult["MessageType"];
rrtxt = returnresult["Message"];
}
Was funktioniert gut. Wenn es ein gültiges Db-Post gibt, gibt es das zweite JSON zurück, das von der TRY-Anweisung korrekt analysiert wird, andernfalls löst es einen "Schlüssel nicht gefunden" -Fehler aus und analysiert die zurückgegebene Zeichenfolge in der CATCH-Anweisung (das erste JSON-Beispiel). Offensichtlich ist das ein schrecklicher Code, aber ich kann mir keinen anderen Weg vorstellen, und ich fragte mich, ob jemand Vorschläge hatte. (bitte?)
Vielen Dank im Voraus.
I [Json.NET] wird dringend empfohlen (http://james.newtonking.com/projects/json-net.aspx) – AlliterativeAlice
ich mit JSON.Net ähnliche Probleme hatte, gibt es keine Möglichkeit, das zu wissen String, den Sie bekommen, bis Sie es in meinem Fall haben. –
Während JSON.Net die gleichen Probleme hat, ist es viel besser als der JSON-Parser, den Sie verwenden. – bluetoft