В моем приложении 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
или вообще никакого расширения?