我的 Silverlight 应用程序中有一个类,它(反)序列化 JSON 字符串到对象类/从对象类。我WebClient.OpenReadAsync
用来获取包含此 JSON 字符串的文件:
{"FirstName":"Bob","LastName":"Underwood"}
然而,在调用OpenReadAsync
之后,检索到的字符串有很多额外的字符:
"PK\n\0\0\0\0\0�u�>h��5\0\0\05\0\0\0\t\0\0\0test.json\"{\\\"FirstName\\\":\\\"Gary\\\",\\\"LastName\\\":\\\"MacDonald\\\"}\"PK\0\n\0\0\0\0\0�u�>h��5\0\0\05\0\0\0\t\0\0\0\0\0\0\0\0\0 \0\0\0\0\0\0\0test.jsonPK\0\0\0\0\0\07\0\0\0\\\0\0\0\0\0"
这是我用来下载 JSON 的代码:
WebClient client = new WebClient();
client.OpenReadCompleted += client_OpenReadCompleted;
client.OpenReadAsync(new Uri("/someJsonFile.zip", UriKind.Relative));
void client_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e) {
if (e.Error == null) {
StreamReader reader = new StreamReader(e.Result);
string jsonString = reader.ReadToEnd().ToString();
}
else {
addMessage("Error " + e.Error.ToString());
}
}
jsonString
最终得到所有额外的数据,所以我不能按原样反序列化它。
另一件需要注意的事情:URI 指向someJsonFile.zip
,但它实际上没有压缩,当我给文件一个扩展名时.json
,或者没有扩展名时,我收到一个错误,它找不到文件,但是当我给它一个扩展名时.zip
,它觉得很好。有没有办法可以使用普通或不使用扩展名?我想知道这是否是配置问题。
问题:
StreamReader
我在拉取这个文件并用来获取导致我获取所有垃圾数据的字符串时做错了什么吗?我是否需要做一些特定的事情才能
WebClient
用来抓取具有不同扩展名的文件,例如.json
,甚至根本没有扩展名?