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
余分なデータがすべて含まれるため、そのまま逆シリアル化することはできません。
もう1つの注意点:URIはを指しますがsomeJsonFile.zip
、実際にはzip.json
されていません。ファイルにのような拡張子を付けるか、拡張子を付けないと、ファイルが見つからないというエラーが表示されますが、のような拡張子を付けると.zip
、うまくいきます。通常の拡張機能を使用する方法はありますか、または拡張機能を使用しない方法はありますか?これは構成の問題かどうか疑問に思いました。
質問:
このファイルをプルして
StreamReader
、ゴミ箱のデータをすべて取得する原因となっている文字列を取得するために使用して、何か間違ったことをしていますか?のように、または拡張子がまったくないなど、
WebClient
さまざまな拡張子を持つファイルを取得するために使用できるようにするために、特定のことを行う必要がありますか?.json