我今天下午花了很長時間嘗試在字符串中實現JSON的反序列化,起初我使用的是DataContractJsonSerializer,因爲我的環境是Silverlight,但它似乎並不支持使用字典開箱即用(引發了許多其他SO問題)。將json字符串反序列化爲一個對象Silverlight
作爲一種選擇,我決定暫時使用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,
}
}
,並把它下面的對象(字典中的雙重要求)中:在實際上得到這個
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());
但是,這導致下面的例外on:
無法從程序集「System.Core,Version = 3.7.0.0,Culture = neutral,PublicKeyToken = 969DB8053D3322AC'中加載類型'System.Dynamic.IDynamicMetaObjectProvider'。
根據你看到的是我的做法完全錯誤還是我只是讓一個學生的錯誤(或兩者)
感謝您的時間!
從我所瞭解的JavaScriptSerializer在Silverlight中不可用(正如我的問題中提到的),這就是爲什麼在使用JSON.NET時 - 如果有任何替代方法,我願意接受。另外args.Result是一個Stream。 – 2012-04-12 00:02:04