Я следующий код (который работает), чтобы десериализации сырье JSON, полученные от веб-вызова:десериализации в DataContract из строкового значения в памяти
public static async Task<Example> GetExample() {
Example record = new Example();
using (WebClient wc = new WebClient()) {
wc.Headers.Add("Accept", "application/json");
try {
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(Example));
using (Stream s = await wc.OpenReadTaskAsync("https://example.com/sample.json")) {
record = ser.ReadObject(s) as Example;
}
} catch (SerializationException se) {
Debug.WriteLine(se.Message);
} catch (WebException we) {
Debug.WriteLine(we.Message);
} catch (Exception e) {
Debug.WriteLine(e.Message);
}
}
return record;
}
Однако, у меня есть другой сценарий, где данные я работаю с зашифрован, поэтому мне нужно декодировать base64, а затем расшифровать результат, чтобы получить json-данные.
Для простоты предположим, что следующее является строка, полученная от сервера (base64 закодированного только):
ew0KICAidG9tIjogIjEyMyINCn0=
который декодирует с (хранится в foo
)
string foo = Convert.FromBase64String("ew0KICAidG9tIjogIjEyMyINCn0=");
Как I pass foo
до .ReadObject()
as .ReadObject()
только принимает Stream
Это хорошо. Вы проверите это позже. Если код, который там работает, изменит ваше решение и отметит как принятый. Тем временем, у меня есть приоритет, поскольку это похоже на то, что я искал. :) –
Добавлен пример в виде метода анонимного типа для повторного использования. Извините за задержку в обновлении с примером. –