Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用WebClient进行JSON序列化?_C# - Fatal编程技术网

C# 使用WebClient进行JSON序列化?

C# 使用WebClient进行JSON序列化?,c#,C#,我知道您可以使用WebClient.DownloadString()从HttpWebResponse反序列化JSON对象,但反过来呢?我查看了MSDN页面,不知道是否可以序列化为JSON对象,有人知道吗?我认为在使用WebClient实例之前,您可能需要将对象序列化为JSON。希望这有帮助 var url = "..."; var json = JsonHelper.ToJson(myObject); var response = PostJson(url, json); 下面是从WebCl

我知道您可以使用
WebClient.DownloadString()
HttpWebResponse
反序列化JSON对象,但反过来呢?我查看了MSDN页面,不知道是否可以序列化为JSON对象,有人知道吗?

我认为在使用WebClient实例之前,您可能需要将对象序列化为JSON。希望这有帮助

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

var response = PostJson(url, json);
下面是从WebClient类发送JSON数据的示例:

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);
        }
    }
}
公共静态类JsonHelper
{
公共静态字符串ToJson(T实例)
{
var serializer=newdatacontractjsonserializer(typeof(T));
使用(var tempStream=new MemoryStream())
{
WriteObject(tempStream,instance);
返回Encoding.Default.GetString(tempStream.ToArray());
}
}
公共静态T FromJson(字符串json)
{
var serializer=newdatacontractjsonserializer(typeof(T));
使用(var tempStream=newmemoryStream(Encoding.Unicode.GetBytes(json)))
{
return(T)serializer.ReadObject(tempStream);
}
}
}
我使用:

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

是的,但我想问一下这里的WebClient对象。我试图弄清楚这是否可能,但没有看到任何关于该对象能够序列化的内容…仅进行反序列化。您能否提供一些示例伪代码,显示您试图对WebClient类执行的操作?序列化JSON,以便我可以通过HttpRequest发送它,以供使用,例如.ascx,甚至是在.NET之外。我只是想知道是否有可能,仅此而已。我没有办法。我已经更新了我的答案,希望这能有所帮助。