此问题在此处已有答案:
Replace "\" with "" in a string in C#(9个答案)
23天前关闭。
此帖子已于23天前编辑并提交以供审阅,无法重新打开:
需要详细信息或澄清通过editing this post添加详细信息并澄清问题。
我有一个包含反斜杠字符的JSON。
"{\"multicast_id\":972977234134833616,\"success\":1,\"failure\":0,\"canonical_ids\":0,\"results\":[{\"message_id\":\"0:1702805668638456%867f64cc867f64cc\"}]}"
字符串
我要移除反斜扛。我尝试了所有可能的方法来移除反斜扛。但似乎都不起作用。我尝试的方法有:
- JToken.解析(响应).ToString()
1.正则表达式反转义(响应)
1.自定义方法。
private string RemoveBackslash(string str)
{
StringBuilder sb = new StringBuilder();
foreach (char c in str)
{
if (c == '\\')
{
char ch = c;
}
else
{
sb.Append(c);
}
}
return sb.ToString();
}
型
1.响应=响应.替换(“",“”);
请帮我删除JSON字符串中的反斜杠。
我尝试了所有可能的方法来消除反斜杠字符。我没有成功。我尝试了类似的堆栈溢出问题,并尝试了所有可能的答案。他们似乎没有一个工作。
This is the screenshot of debugger when I tried response.Replace("", "")的
我被要求查看其他一些答案。根据查看结果,现在可以理解反斜杠实际上不是由. NET添加的。是Visual Studio添加了反斜杠。当我在调试器中的Text Visualizer中尝试时,那些反斜杠消失了。所以这是Visual Studio的事情。实际的字符串没有反斜杠。太棒了。但问题是,当我真正发送响应时并在postman中查看它,反斜杠会出现。如果原始字符串不包含任何反斜杠,为什么它会出现在postman中。我想删除postman中出现的反斜杠。我需要一个解决方案来删除这些反斜杠。The postman image containing the backslashes
我被要求提供一个最小的可重复的例子,我试着运行这里给出的同样的例子作为答案。
static void Main(string[] args)
{
string jsonString = "{\"multicast_id\":972977234134833616,\"success\":1,\"failure\":0,\"canonical_ids\":0,\"results\":[{\"message_id\":\"0:1702805668638456%867f64cc867f64cc\"}]}";
// Method 1: Using JToken.Parse
string cleanedJson1 = JToken.Parse(jsonString).ToString();
// Method 2: Using Replace
string cleanedJson2 = jsonString.Replace("\\", "");
Console.WriteLine(cleanedJson1);
Console.WriteLine(cleanedJson2);
}
型
因为反斜杠是由visual studio添加的,所以创建一个最小可重复性的示例真的很难。上面的示例在我的计算机上工作。这意味着返回的json不包含任何反斜杠。上面的示例使用了JToken.Parse和string.Replace方法。当我在控制台示例中运行它时,它工作正常,但在我的项目中不工作。为什么?原因是谁创建了反斜杠。在上面的例子中,反斜杠是.NET代码的一部分。我已经给出了一个包含反斜杠的JSON字符串作为输入。但是在我的项目中,那些反斜杠是由visual studio添加的。这两个方法,当反斜杠是由visual studio创建时,JToken.Parse和string.Replace不起作用。根据发送给我以供审阅的链接,这些反斜杠是由visual studio添加的,但原始字符串中没有它。当我通过postman发送和接收字符串时,反斜杠确实出现了。以下是我通过postman接收到的内容。
{
"result": "{\"multicast_id\":1184953349068678451,\"success\":1,\"failure\":0,\"canonical_ids\":0,\"results\":[{\"message_id\":\"0:1702812609911950%867f64cc867f64cc\"}]}",
"error": ""
}
型
如果只是visual studio添加了反斜杠,而原始字符串没有它,为什么postman会显示这些反斜杠。
为了重新创建这个示例,我想让visual studio添加这些反斜杠。如果有人指导我如何做,那将是很好的。
有人问我一个问题,我最初是怎么得到这个json的,下面是生成这个json的代码。
public FCMPushNotification SendNotification(string _title, string _message, string priority, string _to)
{
FCMPushNotification result = new FCMPushNotification();
try
{
result.Successful = true;
result.Error = null;
// var value = message;
var requestUri = "https://fcm.googleapis.com/fcm/send";
WebRequest webRequest = WebRequest.Create(requestUri);
webRequest.Method = "POST";
webRequest.Headers.Add(string.Format("Authorization: key={0}", "AAAA10wXm0Yxxxxxxxxxx"));
// webRequest.Headers.Add(string.Format("Sender: id={0}", "YOUR_FCM_SENDER_ID"));
webRequest.ContentType = "application/json";
var data = new
{
to = _to, // this is for topic
priority = priority,
notification = new
{
title = _title,
body = _message,
//icon="myicon"
}
};
//var serializer = new JavaScriptSerializer();
//var json = serializer.Serialize(data);
string postbody = JsonConvert.SerializeObject(data).ToString();
Byte[] byteArray = Encoding.UTF8.GetBytes(postbody);
webRequest.ContentLength = byteArray.Length;
using (Stream dataStream = webRequest.GetRequestStream())
{
dataStream.Write(byteArray, 0, byteArray.Length);
using (WebResponse webResponse = webRequest.GetResponse())
{
using (Stream dataStreamResponse = webResponse.GetResponseStream())
{
using (StreamReader tReader = new StreamReader(dataStreamResponse))
{
string sResponseFromServer = tReader.ReadToEnd();
result.Response = sResponseFromServer;
}
}
}
}
}
catch (Exception ex)
{
result.Successful = false;
result.Response = null;
result.Error = ex;
}
return result;
}
[HttpPost]
[Route("[action]")]
public result SendNotification([FromBody] Notification value)
{
result rr = new result();
rr.Result = "Error";
rr.Error = "";
SqlConnection con = new SqlConnection(connString);
string query = "SELECT UserToken FROM AndroidTokens WHERE UserId='" + value.UserId + "'";
con.Open();
DataTable dt = new DataTable();
SqlDataAdapter adp = new SqlDataAdapter(query, con);
adp.Fill(dt);
string userToken = string.Empty;
if (dt.Rows.Count > 0)
{
DataRow dr = dt.Rows[0];
userToken = dr["UserToken"].ToString();
}
FCMPushNotification fcmPush = new FCMPushNotification();
fcmPush = fcmPush.SendNotification(value.Title, value.Message, value.Priority, userToken);
if (fcmPush.Successful)
{
string response = fcmPush.Response; // THIS LINE IS CREATING THE PROBLEM
string token = response.Replace("\\", "");
rr.Result = token;
}
else
{
rr.Error = fcmPush.Error.Message;
}
return rr;
}
型
1条答案
按热度按时间8fsztsew1#
如果你有一个包含转义反斜杠的JSON字符串,并且你想删除这些反斜杠以获得一个干净的JSON字符串,你可以在C#中按照以下步骤操作:
字符串