我在我的Silverlight应用程序中有一个类(de-)将JSON字符串序列化到/来自对象类。 我用WebClient.OpenReadAsync
获得包含此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
,甚至根本没有扩展名?
所有这些问题都来自您的Web服务器。 – SLaks
...除了你没有在'reader.Dispose()'上执行任何操作!你应该把它放在一个'using'块中,例如''使用(StreamReader reader = ...){...}'。 – stakx