使用Json序列化后转义字符

时间:2014-02-14 06:06:55

标签: c# 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字符串发送给第三方休息服务(他们只接受Json format)。

非常感谢任何帮助。

干杯 小号

3 个答案:

答案 0 :(得分:1)

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

  string json="{\"head\":{\"version\":\"1.0\",\"serial\":\"20140102,6,125\",\"skinId\":\"Test\"";

    File.WriteAllText("c:\\tests on.txt",json) ;

你会在文件中看到你真正想要的json。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

或者:

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

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

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