私は今日の午後、文字列内でJSONの逆シリアル化を実装しようとしてかなりの時間を費やしました。最初は、環境がSilverlightであるため、 DataContractJsonSerializerを使用していましたが、すぐに使用できる辞書の使用をサポートしていないようです(他の多くの場合に発生) SOの質問)。
別の方法として、当面はJSON.NETを使用することにしました(前述のSOの質問への回答に基づく)。次の問題が発生しました。
以下のJSONを逆シリアル化したい:
{
"disclaimer": "This data is collected from various providers and provided free of charge for informational purposes only, with no guarantee whatsoever of accuracy, validity, availability or fitness for any purpose; use at your own risk. Other than that - have fun, and please share/watch/fork if you think data like this should be free!",
"license": "Data collected from various providers with public-facing APIs; copyright may apply; not for resale; no warranties given.",
"timestamp": 1334183999,
"base": "USD",
"rates": {
"AED": 3.6732,
"AFN": 48.400002,
"ALL": 106.669998,
}
}
次のオブジェクト内に配置します(辞書内のdoubleが必要です)。
public class ExchangeData
{
public string disclaimer { get; set; }
public string license { get; set; }
public string timestamp { get; set; }
public string @base { get; set; }
public Dictionary<string, double> rates { get; set; }
}
これを実際に機能させるための私の最新の試みは以下のとおりです。
StreamReader reader = new StreamReader(args.Result);
ExchangeData data = JsonConvert.DeserializeObject<ExchangeData>(reader.ReadToEnd());
ただし、これにより次の例外が発生します。
アセンブリ'System.Core、Version = 3.7.0.0、Culture = neutral、PublicKeyToken=969DB8053D3322AC'からタイプ'System.Dynamic.IDynamicMetaObjectProvider'を読み込めませんでした。
あなたが見ることができるものに基づいて、私のアプローチは完全に間違っているのか、それとも私は男子生徒の間違いを犯しているだけですか(または両方!)
御時間ありがとうございます!