【问题标题】:Escape characters after Serializing using Json使用 Json 序列化后转义字符
【发布时间】:2015-09-25 04:19:00
【问题描述】:

Y 在使用来自 ASP.Net Web API 的 newtonsoft.json 时,我的对象是否以一种奇怪的方式被序列化?

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)。

非常感谢任何帮助。

干杯 S

【问题讨论】:

  • 你在使用mvc web api吗?还是传统的网络服务?

标签: c# json


【解决方案1】:

这里没有什么可担心的。这是正确的序列化对象 json。它之所以出现是因为您在 Visual Studio 中通过悬停变量来查看它的值来查看它,因为在 c# 中,\" 用于表示字符串中的 "。当您将此值写入文本文件时(只是为了测试实际值),您会看到它的实际值是什么:

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      我怀疑您是否仍在寻找答案,但我的解决方法是使用 Newtonsoft 创建一个 JObject 并通过它。

      要么:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-06-01
        • 2018-04-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-18
        • 1970-01-01
        相关资源
        最近更新 更多