代码之家  ›  专栏  ›  技术社区  ›  rony l

告诉Json.Net在序列化对象时编写单引号而不是双引号

  •  41
  • rony l  · 技术社区  · 10 年前

    呼叫时 Newtonsoft.Json.JsonConvert.SerializeObject(myObject) 我得到的键和值用双引号括起来,如下所示:

    {"key" : "value"}

    我希望它们用如下单引号括起来:

    {'key' : 'value'}

    是否可以使用Json.Net?

    1 回复  |  直到 5 年前
        1
  •  46
  •   Brian Rogers    9 年前

    是的,这是可能的。如果使用 JsonTextWriter 显式而不是使用 JsonConvert.SerializeObject() ,您可以设置 QuoteChar 到单个引用。

    var obj = new { key = "value" };
    
    StringBuilder sb = new StringBuilder();
    using (StringWriter sw = new StringWriter(sb))
    using (JsonTextWriter writer = new JsonTextWriter(sw))
    {
        writer.QuoteChar = '\'';
    
        JsonSerializer ser = new JsonSerializer();
        ser.Serialize(writer, obj);
    }
    
    Console.WriteLine(sb.ToString());
    

    输出:

    {'key':'value'}
    

    小提琴: https://dotnetfiddle.net/LGRl1k

    请记住,在JSON中的键和值周围使用单引号被认为是非标准的(请参见 JSON.org ),并且可能会给严格遵守标准的解析器带来问题。