使用Json进行序列化后转义字符

使用ASP.Net Web API中的newtonsoft.json ,Y是我的对象以奇怪的方式序列化?

 var s = JsonConvert.SerializeObject(request, Formatting.None, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }); 

输出字符串如下,

 "{\"head\":{\"version\":\"1.0\",\"serial\":\"20140102,6,125\",\"skinId\":\"Test\"" 

我想将Json format字符串发送到第三方rest服务(它们只接受Json format )。

任何帮助深表感谢。

干杯S.

这里没什么值得担心的。 这是正确的序列化对象json。 它看起来是这样的,因为你是在视觉工作室中通过hover变量来查看它的值来查看它,因为在c#中“用于表示字符串中的”。 当您将此值写入文本文件(仅用于测试实际值)时,您将看到它的实际值是什么:

  string json="{\"head\":{\"version\":\"1.0\",\"serial\":\"20140102,6,125\",\"skinId\":\"Test\""; File.WriteAllText("c:\\tests on.txt",json) ; 

您将在文件中看到json您真正想要的内容。

这是因为你已经将它序列化了两次,你可以发布更多的代码或者完全跳过调用SerializeObject

我怀疑你还在寻找答案,但我的解决方法是用Newtonsoft创建一个JObject并传递它。

或者:

 JObject jBytes = Object.Parse(JsonConvert.SerializeObject(myObject, MyDateTimeFmtString); 

要么

 JObject jBytes = JObject.FromObject(myObject, MyJsonSerializer); 

第一种情况是我的第二种选择,但我认为Newtonsoft中存在一个错误,其中JObject.FromObject忽略了JsonSerializer中的DateFormatString。