将C#对象转换为json字符串,如何处理双引号

将C#对象转换为json字符串,如何处理双引号,c#,json,serialization,json.net,C#,Json,Serialization,Json.net,我使用Newtonsoft.Json将对象解析为Json字符串。它返回一些类似这样的想法: {\"code\":-1,\"idName\":\"empty\",\"idValue\":0,\"message\":\"Failed,can not read object from body\"} {"code":-1,"idName":"empty\",\"idValue\":0,\"message\":\"Failed,can not read object from body\"} 我

我使用Newtonsoft.Json将对象解析为Json字符串。它返回一些类似这样的想法:

{\"code\":-1,\"idName\":\"empty\",\"idValue\":0,\"message\":\"Failed,can not read object from body\"}
{"code":-1,"idName":"empty\",\"idValue\":0,\"message\":\"Failed,can not read object from body\"}  
我想这不是一个有效的json字符串,任何人都能帮我解决吗

我想要的是这样的东西:

{\"code\":-1,\"idName\":\"empty\",\"idValue\":0,\"message\":\"Failed,can not read object from body\"}
{"code":-1,"idName":"empty\",\"idValue\":0,\"message\":\"Failed,can not read object from body\"}  

编辑:这是响应FIDER TextView中的实际json,我可以看到:

"{\"code\":-1,\"idName\":\"empty\",\"idValue\":0,\"message\":\"Failed,can not read object from body\"}"
情况是这样的: 我将序列化的json字符串放入web api CreateResponse方法中。我可以在fidder中看到响应字符串,就像我在问题中所说的,它不是有效的json

Request.CreateResponse(HttpStatusCode.Created, returnString);
returnString
是来自序列化的
ResponseString
对象的json字符串


我不认为这是一个有效的字符串,我错了吗?

我怀疑您在调试器中看到了这一点。它不是实际的字符串,只是VisualStudio调试器中的表示形式。例如,我使用以下代码进行了测试:

private static void Main(string[] args)
{
    var station = new Station {Name = "Duren Kalibata", LastTemperature = 45, MostRecentDate = DateTime.Now};
    var str = JsonConvert.SerializeObject(station);
    Console.WriteLine(str);
}
如何在visual studio监视窗口中显示
str
值:

如何在控制台中打印实际字符串:

结论:Newtonsoft.Json应该已经将对象转换为正确的Json字符串表示形式。无需进一步努力

更新:


对于您的编辑,我有一种强烈的感觉,它再次是另一个工具(fiddler)中的相同表示。在许多编程平台中,这是双引号的表示形式,因为普通双引号(
)被视为字符串的结尾/开头(只是说,以防您错过该信息)。

最后,修复此问题。和你们分享

根本原因:
我猜这是双重序列化的问题。 看来ASP.NET web api 2框架将自动为我们进行序列化。这就是为什么我
SerializeObject
然后
Debug.Write(json)
字符串,它工作得很好

string json = JsonConvert.SerializeObject(rs);     
Debug.Write(json);
但在fiddler调用web API之后,web API返回了带有无效json(\”)的响应,正如我前面所说的。在其他客户端(如ios、android设备)上也发生了同样的情况

因为web api为我做了序列化,我还做了额外的显式序列化
string json=JsonConvert.SerializeObject(rs);
,这意味着我运行了另一个不需要的parseJson

根据我这里的问题,我只是直接将未序列化的对象放入
CreateResponse
方法中。
Request.CreateResponse(HttpStatusCode.Created,rs);
并为FIDER和其他客户端返回有效的json

如何解决此问题: Request.CreateResponse(HttpStatusCode.Created,rs)

在控制器中

ResponseString rs = new ResponseString();
                        rs = CommonUtility.FormatResponseString(0, "pacelId", returnPacelId, "Succeed,created items in db success");
                        return Request.CreateResponse(HttpStatusCode.Created, rs);

是您在调试器的工具提示中向我们显示的字符串吗?@Dirk,来自FIDER而不是调试器。服务器api是asp.net web api 2TNX用于更新,我知道\“是双引号的表示。问题是,android程序员说她收到的也是无效的json字符串。他试图反对json stirng,但她得到了json格式无效的异常。