C# Newtonsoft.Json.JsonConvert.SerializeObject 在双引号前添加反斜杠

时间:2021-07-15 07:30:39

标签: c# json

我有一个使用此代码返回 json 的 aspnet web api:

Project_Model mdl = new Project_Model(transactionId, data);
string json = string.Empty;
json = JsonConvert.SerializeObject(mdl);

这是变量“json”的值:

{\"Pj_Id\":\"23a6bd47-c35a-4ee3-8998-bd0406bc5839\",\"Pj_CUsr_Id\":\"8cb52c3e-25b7-412d-8010-cadd75f1f64b\",\"Pj_Number\":\"test 101\",\"Pj_Name\":\"Test Project 101\",\"Pj_Location\":\"1551 Main St, Houston\"}

但它应该是这样的:

{
  "Pj_Id": "23a6bd47-c35a-4ee3-8998-bd0406bc5839",
  "Pj_CUsr_Id": "8cb52c3e-25b7-412d-8010-cadd75f1f64b",
  "Pj_Number": "test 101",
  "Pj_Name": "Test Project 101",
  "Pj_Location": "1551 Main St, Houston"
}    

我知道我们会在调试器中得到这样的转义字符,但不会在输出中得到。上面带有反斜杠的示例是从 PostMan 相同 API 的输出中复制的。

谁能告诉我为什么会发生这种情况以及可以做些什么来清理它?

谢谢。

1 个答案:

答案 0 :(得分:2)

@phuzi 在上面的评论中是正确的:

<块引用>

理想情况下,您不应该自己序列化 JSON,因为它很可能被双重序列化。只需从 ASP.Net Web API 操作方法而不是 JSON 返回 mdl

我对它进行了双重序列化。我刚刚返回了类,结果是完美的 json。

谢谢。