I know you can deserialize a JSON object from an HttpWebResponse
using the WebClient.DownloadString()
but what about the other way around? I've looked at the MSDN pages and I don't know if you can serialize to JSON objects or not, anyone know?
Asked
Active
Viewed 3.5k times
12

Musakkhir Sayyed
- 7,012
- 13
- 42
- 65

PositiveGuy
- 46,620
- 110
- 305
- 471
-
Can you provide some sample pseudo code showing what you are trying to do with the WebClient class? – Wallace Breza Aug 02 '10 at 21:37
-
Serialize JSON so that I can send it via an HttpRequest for consumption of lets say an .ascx or even outside .NET. Just want to know if it's possible that's all. I don't see a way. – PositiveGuy Aug 02 '10 at 21:39
2 Answers
30
I think you may just have to serialize the object into JSON before using the WebClient instance. Hope this helps
var url = "...";
var json = JsonHelper.ToJson(myObject);
var response = PostJson(url, json);
Here's an example of sending JSON data from the WebClient class:
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);
}
}
Here is a simple helper class that uses the DataContractJsonSerializer
class to serialize / deserialize object to and from 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);
}
}
}

Wallace Breza
- 4,898
- 1
- 28
- 33
-
Yes, but I'm asking about the WebClient object here. I was trying to figure out if it's possible but do not see anything out there talking about that object being able to serialize...only deserialize. – PositiveGuy Aug 02 '10 at 21:35