在C#中从JSON响应中删除多个斜杠时获取异常

时间:2014-11-26 15:03:34

标签: c# json xamarin.android

这是我的意见

{\"eventResponseList\":[{\"Event_Id\":\"E008\",\"Status_Code\":\"03\",\"Event_time     \":\"\\\/Date(1417001099677)\\\/\"},{\"Event_Id\":\"E002\",\"Status_Code\":\"03\",\"Event_time\":\"\\\/Date(1417001099677)\\\/\"}]}

我正在使用此代码反序列化响应但我得到异常

 if (response.StatusCode == System.Net.HttpStatusCode.OK)
 {
   string sanitizedResponseContent = Regex.Replace(response.Content, @"\p{C}+", String.Empty);
   retunResponse = JsonConvert.DeserializeObject<RootObjectEventResponseList>(sanitizedResponseContent);
 }

我也用过

string sanitizedResponseContent = (response.Content).Replace(@"\""", @"""");

但每次我删除斜线后都会得到这个

"\"{\"eventResponseList\":[{\"Event_Id\":null,\"Status_Code\":\"02\",\"Event_time\":\"\\\\\\/Date(1417013952712)\\\\\\/\"}]}\""

This one is generated error

2 个答案:

答案 0 :(得分:0)

尝试使用此方法。不知道它是否适合您解决方案。但值得尝试。

var escape = Regex.Escape(@"\sterte\sfsfs\sssss\ssss");
var replace = Regex.Replace(escape, "\\\\", "");

答案 1 :(得分:0)

您的DTO可能应该与此类似:

public class EventResponseList
{
    public string Event_Id { get; set; }
    public string Status_Code { get; set; }
    public DateTime Event_time { get; set; }
}

public class RootObjectEventResponseList
{
    public List<EventResponseList> eventResponseList { get; set; }
}

如果响应字符串确实是那种格式,则问题是Status_code上的空格。它们看起来都像是空白,所以你可以尝试用以下代码替换它:

var json = Regex.Replace(response.Content, @"Event_time[\s]+", "Event_time");