小编Mic*_*ael的帖子

使用Web API和JSON.NET序列化对象时,防止$ id/$ ref

Newtonsoft.Json.PreserveReferencesHandling.Objects在序列化对象时,我似乎无法阻止Web API/JSON.NET的使用.换句话说,尽管使用了以下设置,但$ id/$ ref总是在序列化对象中使用:

public class MvcApplication : System.Web.HttpApplication {

    protected void Application_Start () {
        WebApiConfig.Register(GlobalConfiguration.Configuration);
    }

}

public static class WebApiConfig {

    public static void Register (HttpConfiguration config) {
        JsonMediaTypeFormatter jsonFormatter = config.Formatters.OfType<JsonMediaTypeFormatter>().Single();
        jsonFormatter.UseDataContractJsonSerializer = false;
        jsonFormatter.SerializerSettings.Formatting = Newtonsoft.Json.Formatting.Indented;
        jsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
        jsonFormatter.SerializerSettings.PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.None;
    }

}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

c# json.net asp.net-mvc-4 asp.net-web-api

15
推荐指数
3
解决办法
1万
查看次数

正则表达式使用换行符拆分字符串(除非它在双引号之间)

我正在做一些分隔文件处理。我需要做的第一件事是获取所有“行”。得到每一行后,我可以根据指定的分隔符进行拆分。因此,为了获得行,我需要使用各种行名称(\r\n、\r、\n)拆分字符串。以下一直有效,直到我在双引号中遇到换行符:

return content.Split(new string[] { "\r\n", "\r", "\n" }, StringSplitOptions.None);
Run Code Online (Sandbox Code Playgroud)

因此,如果您考虑以下文本(我的原始文本将双引号内的双引号转义为 \" 而不是 ""),其中每一行都由行名称之一分隔,并且行中的每个字段/列由管道“|”字符:

string s = "row1 col1|\"row1 \"\"col2a\"\"\r\nrow1 col2b\"|row1 col3\nrow2 col1|\"row2 \"\"col2a\"\"\rrow2 \"\"col2b\"\"\"|row2 col3\r\nrow3 col1|\"row3 col2a\nrow3 col2b\"|row3 col3";
Run Code Online (Sandbox Code Playgroud)

这等于以下字符串:

row1 col1|"row1 ""col2a""{CRLF}row1 ""col2b"""|row1 col3{CRLF}row2 col1|"row2 ""col2a""{CRLF}row2 ""col2b"""|row2 col3{ CRLF}row3 col1|"row3 col2a{CRLF}row3 col2b"|row3 col3

用我原来的方法拆分上面的结果有 5 行:

string[] result = s.Split(new string[] { "\r\n", "\r", "\n" }, StringSplitOptions.None);
Run Code Online (Sandbox Code Playgroud)

但我想使用行分隔符 (\r\n, \r, \n) 将上述内容拆分为 3 行:

result[0] == "row1 col1|\"row1 \"\"col2a\"\"\r\nrow1 col2b\"|row1 col3"
result[1] == "row2 col1|\"row2 \"\"col2a\"\"\rrow2 \"\"col2b\"\"\"|row2 col3" …
Run Code Online (Sandbox Code Playgroud)

c# regex split newline double-quotes

3
推荐指数
1
解决办法
2354
查看次数