C#反序列化包含反斜杠的Http POST响应?

时间:2016-10-29 11:15:20

标签: c# asp.net rest asp.net-web-api

我需要向我的Web API后端发出POST请求并检索&反序列化我从中获得的响应,以便我可以访问“用户”中返回的值。后端发送的对象。我成功地提出了请求并得到了答复。

但是响应包含反斜杠。我很困惑这个响应需要如何反序列化。我的代码如下:

这是我的POST请求

var request = (HttpWebRequest)WebRequest.Create("MY_SERVER_URL/api/createitem");
request.ContentType = "application/json";
request.Method = "POST";

using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
     //'data' is the object that contains the parameters
     string json = new JavaScriptSerializer().Serialize(data);
     streamWriter.Write(json);
}

var response = (HttpWebResponse)request.GetResponse();
using (var streamReader = new StreamReader(response.GetResponseStream()))
{
     var result = streamReader.ReadToEnd();
     string responseString = result.ToString();
     //responseString contains the response with back slashes
}

这是我得到的回复:

{\"$id\":\"1\",\"status\":\"200\",\"description\":\"Status OK\",\"user\":{\"$id\":\"2\",\"Id\":124200,\"Name\":\"Rown Doger\",\"Email\":\"rown@email.com\",\"Password\":123,\"DateJoined\":\"2016-10-28T20:20:50\",\"Picture\":\"\",\"AccessToken\":\"testtoken_3432\"}}

如何使用C#反序列化并分别检索状态,描述和用户对象,以便我可以访问用户对象中的值?

修改

来自后端的响应有效,因为它在Fiddler和Postman中正确显示。

1 个答案:

答案 0 :(得分:0)

我访问了enter link description here,手动删除了所有斜杠并将其转换为对象

my-main-task

反序列化使用JavaScriptSerializer:

public class User
{
    //public string __invalid_name__$id { get; set; }
    public int Id { get; set; }
    public string Name { get; set; }
    public string Email { get; set; }
    public int Password { get; set; }
    public string DateJoined { get; set; }
    public string Picture { get; set; }
    public string AccessToken { get; set; }
}

public class RootObject
{
    //public string __invalid_name__$id { get; set; }
    public string status { get; set; }
    public string description { get; set; }
    public User user { get; set; }
}

这将反序列化,但你有两个特殊的字符属性,不会被转换,所以你必须评论它们并运行你的代码。