いずれかのJSON文字列の次の2つの形式の1:JSONをデシリアライズするより良い方法はありますか?返すことがあります。私は、APIに投稿しています
{
"MessageType": 6,
"Message": "Unable to SAVE new record. Invalid posted data."
}
または
{
"Model": {
"Id": "1-6Q0RZ9",
...
},
"ResponseResult": {
"MessageType": 10,
"Message": "Successfully saved, Record Id = 1-6Q0RZ9"
}
}
私はのMessageTypeから結果を取得する必要があり、すべての場合は試してみました私は結果を読むことを考えることができます。なぜなら、構文またはキーを取得する:valueは各JSON文字列ごとに異なり、いずれかをトリガーする他のフラグは存在しないからです。だから私が使用したコードは:
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"];
}
素晴らしいです。有効なDb投稿がある場合、TRY文によって正しく解析される2番目のJSONを返します。そうでない場合、「キーが見つかりません」というエラーがスローされ、CATCH文(最初のJSONの例)で返された文字列が解析されます。明らかにこれは恐ろしいコードですが、私はこれを行うための別の方法を考えることができません。誰かが提案をしているのだろうかと思っていました。 (どうか?)
Thanxを事前に入力してください。
私は強く – AlliterativeAlice
私はJSON.Netと同様の問題を持っていた、知る方法がない[Json.NET](http://james.newtonking.com/projects/json-net.aspx)をお勧めしますあなたが私の場合にそれを持っているまであなたが得ようとしている文字列。 –
JSON.Netには同じ問題がありますが、使用しているJSONパーサーよりもはるかに優れています。 – bluetoft