1

我有:

    MemoryStream stream1 = new MemoryStream();
    DataContractJsonSerializer s = new DataContractJsonSerializer(typeof(UserTask));
    s.WriteObject(stream1, task);
    stream1.Position = 0;
    StreamReader sr = new StreamReader(stream1);
    Trace.Write("JSON form of Person object: ");
    Trace.WriteLine(sr.ReadToEnd());
    string json = sr.ReadToEnd();

    ASCIIEncoding encoding = new ASCIIEncoding();

    byte[] data = encoding.GetBytes(json);

    logger.Write("Attempting to post the foillowing JSON data: " + json);
    Trace.WriteLine("Attempting to post the foillowing JSON data: " + json);
    // Make a post to the other service
    HttpWebRequest httpWReq =
        (HttpWebRequest)WebRequest.Create(@"https://some.company.url");
        //(HttpWebRequest)WebRequest.Create(@"https://some.company.url");


    httpWReq.Method = "POST";
    httpWReq.ContentType = "application/x-www-form-urlencoded";
    httpWReq.ContentLength = data.Length;

    using (Stream stream = httpWReq.GetRequestStream())
    {
        stream.Write(data, 0, data.Length);
    }
    HttpWebResponse response = null;
    string responseString = null;
    try
    {
        // Do some work that may result in a transient fault.
        retryPolicy.ExecuteAction(
          () =>
          {
              // Call a method that uses Windows Azure storage and which may
              // throw a transient exception. 
              response = (HttpWebResponse)httpWReq.GetResponse();
              responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
          });
    }

这实际上并不是通过网络将 JSON 发送到其他服务......我正在使用 DataContractJsonSerializer 因为数据包含字典。如果有用的话,我可以发布数据的样子,但我认为那部分有效吗?

4

3 回答 3

3

我个人更喜欢使用James Newton-King 的 Json.Net

安装 nuget 包。 在此处输入图像描述

接下来,只需序列化它。

var users = GetUsersFromDatabase();
var json = JsonConvert.SerializeObject(users, Formatting.Indented);

如果您有一些 json 并且希望将其转换为丰富的对象,那么我们可以轻松地对其进行反序列化。

在这个例子中,让我们有一个包含用户的 txt 文件,采用有效的 json 格式...

var usersText = File.ReadAllText("C:\\Temp\\JsonUsers.txt");
var users = JsonConvert.DeserializeObject<IList<User>>(usersText);
于 2013-05-28T01:52:17.760 回答
2

JavaScriptSerializer通常是一个不错的方法。

var json = new JavaScriptSerializer().Serialize(task);
于 2013-05-28T01:32:08.773 回答
1

JSON.NET 是 ASP.NET MVC 用于 JSON 的默认库。您可以使用 nuget 获取它,然后使用静态类 JsonConvert。

string json = JsonConvert.SerializeObject(task);
于 2013-05-28T01:52:13.807 回答