JSON 序列化添加额外字符为“\”

JSON Serialization adding extra character as "\"

我有一个从报告表达式中得到的字符串:

 jql = @"(Project in (""CI"") and Status in (""Open"") and issueType in (""Action Item"")) or issueKey = ""GR L-1"" order by Created asc";

我将它转换为 JSON 并得到这样的结果:

 jql = jql.Replace("\"", "'");
 jql = "{" + "\"" + "jql" + "\"" + ": " + "\"" + jql + "\"" + "}";

低于JSON:

   {"jql": "(Project in ('CI') and Status in ('Open') and issueType in ('Action Item')) or issueKey = 'GR L-1' order by Created asc"}

当我像这样进行序列化时:

string data = JsonConvert.SerializeObject(request);

它给我这样的刺痛感:

 {"jql":"{\"jql\": \"(Project in ('CI') and Status in ('Open') and issueType in ('Action Item')) or issueKey = 'GR L-1' order by Created asc\"}","startAt":0,"maxResults":0,"fields":[]}

这是一种错误的字符串。其实我想要这样的字符串:

{"jql": "(Project in ('CI') and Status in ('Open') and issueType in ('Action Item')) or issueKey = 'GR L-1' order by Created asc"}

注意:我需要这样请求:

SearchRequest request = new SearchRequest();
request.JQL = jql;
 string data = JsonConvert.SerializeObject(request);
 string result = runQuery(JiraResource.search, data, "POST");

我这样试过:Escape characters after Serializing using Json 但是,这不起作用...

实际上我想要这样的字符串:

{"jql": "(Project in ('CI') and Status in ('Open') and issueType in ('Action Item')) or issueKey = 'GR L-1' order by Created asc"}

我该怎么做?

此代码适用于您的案例:

string jql = @"(Project in (""CI"") and Status in (""Open"") and issueType in (""Action Item"")) or issueKey = ""GR L-1"" order by Created asc";
jql = jql.Replace("\"", "'");
string result = JsonConvert.SerializeObject(new { jql = jql } );

产生输出

{"jql":"(Project in ('CI') and Status in ('Open') and issueType in ('Action Item')) or issueKey = 'GR L-1' order by Created asc"}

符合预期。