JavaScriptSerializer()。反序列化无法识别的转义序列

时间:2013-06-14 08:19:49

标签: c# jquery deserialization

我认为我已经解决了问题,但我不知道如何解决它。我正在为我的jQuery网格实现过滤器,当我将过滤器数据传递给服务器时,我收到此unrecognized escape sequence错误。

这是我发送给服务器的数据:

[{"field":"Code","op":"na","data":""},
{"field":"UserId","op":"na","data":"Name\Jim"},
{"field":"Name","op":"na","data":""}]

在发送{"field":"UserId","op":"na","data":"Name\Jim"},之前我没有收到此错误,我认为唯一可能导致此类问题的字符是"Name\Jim"中的反斜杠。

我在这里得到了这个错误:

if (!string.IsNullOrWhiteSpace(request["filters"]))
{
      string jsonString = request["filters"];
      filter.Rules = new JavaScriptSerializer().Deserialize<FilterRule[]>(jsonString);
}

更确切地说,来自这里 - filter.Rules = new JavaScriptSerializer().Deserialize<FilterRule[]>(jsonString);

我想我必须在某处以某种方式逃避这一斜线。我想知道在哪里做正确的地方并且在反序列化期间是否可以在服务器端进行,如果那是问题呢?

P.S

这是我准备过滤数据的jQuery部分:

filter.push({ field: 'UserId', op: 'na', data: $('#cboFilterUser').val() });

也许我可以在这里逃避它?

P.S P.S

好的,我找到了一些现在有效的解决方案:

 if (!string.IsNullOrWhiteSpace(request["filters"]))
            {
                string jsonString = request["filters"];
                jsonString = jsonString.Replace(@"\", @"\\");
                filter.Rules = new JavaScriptSerializer().Deserialize<FilterRule[]>(jsonString);
            }

这一部分:jsonString = jsonString.Replace(@"\", @"\\");但我觉得它更像是一种解决方案而不是真正的解决方案。请评论这是一个好主意,如果我这样做可能会出错。

0 个答案:

没有答案