この方法で、Json.net JsonConvert を使用して、残りの API から JSON を逆シリアル化しています。
WebRequest request = WebRequest.Create(url);
WebResponse ws = request.GetResponse();
using (StreamReader sr = new StreamReader(ws.GetResponseStream()))
{
jsonString = sr.ReadToEnd();
}
RootObject root = JsonConvert.DeserializeObject<RootObject>(jsonString);
これはうまく機能しています。特定のデータセットを取得しようとすると、シリアル化すると次のエラーが生成されます。
Error reading string. Unexpected token: StartObject. Path
問題を絞り込んで、API が一部のエントリに対して誤った形式でデータを返すようにしました。したがって、返されるデータのほとんどは次のようになります。
Income: {
currency: {
GBP: "48",
USD: "32",
EUR: "40"
}
},
ただし、場合によっては、次のように返されます。
income: {
currency: {
GBP: {
GBP: "0",
USD: "0",
EUR: "0"
},
USD: {
GBP: "0",
USD: "0",
EUR: "0"
},
EUR: {
GBP: "0",
USD: "0",
EUR: "0"
}
}
短期的には、API を修正するために私にできることは何もないので、どうにかしてこれを処理する必要がありますが、私は Json.net を使用するのに比較的慣れていないため、最善の方法がわかりません。 . アドバイスをいただければ幸いです。
逆シリアル化しようとしているクラス構造は非常に単純です。
public class RootObject
{
public List<Income> Income_list { get; set; }
}
public class Income
{
public Currency currency { get; set; }
}
public class Currency
{
public string GBP { get; set; }
public string USD { get; set; }
public string EUR { get; set; }
}