Подтвердить что ты не робот

Использование WebClient для сериализации JSON?

Я знаю, что вы можете десериализовать объект JSON из HttpWebResponse с помощью WebClient.DownloadString(), но как насчет другого пути? Я просмотрел страницы MSDN, и я не знаю, можете ли вы сериализовать объекты JSON или нет, кто-нибудь знает?

4b9b3361

Ответ 1

Я думаю, вам просто придется сериализовать объект в JSON, прежде чем использовать экземпляр WebClient. Надеюсь, что это поможет

var url = "...";
var json = JsonHelper.ToJson(myObject);

var response = PostJson(url, json);

Здесь приведен пример отправки данных JSON из класса WebClient:

public static string PostJson(string url, string data)
{
    var bytes = Encoding.Default.GetBytes(data);

    using (var client = new WebClient())
    {
        client.Headers.Add("Content-Type", "application/json");
        var response = client.UploadData(url, "POST", bytes);

        return Encoding.Default.GetString(response);
    }
}

Вот простой класс-помощник, который использует класс DataContractJsonSerializer для сериализации/десериализации объекта в JSON и из него.

public static class JsonHelper
{
    public static string ToJson<T>(T instance)
    {
        var serializer = new DataContractJsonSerializer(typeof(T));
        using (var tempStream = new MemoryStream())
        {
            serializer.WriteObject(tempStream, instance);
            return Encoding.Default.GetString(tempStream.ToArray());
        }
    }

    public static T FromJson<T>(string json)
    {
        var serializer = new DataContractJsonSerializer(typeof(T));
        using (var tempStream = new MemoryStream(Encoding.Unicode.GetBytes(json)))
        {
            return (T)serializer.ReadObject(tempStream);
        }
    }
}

Ответ 2

Я использую:

var json = new JavaScriptSerializer().Serialize(yourObject);