序列化不带引号的属性名称

我试图让Json.Net将序列化一个没有引号的属性名称,并且很难在Google上找到文档。 我怎样才能做到这一点?

它只是大型Json渲染的一小部分,所以我更愿意添加一个属性属性,或者重写该类的序列化方法。

目前,它呈现如下:

"event_modal":
{
    "href":"file.html",
    "type":"full"
}

我希望得到它像渲染:( hreftype不带引号)

"event_modal":
{
    href:"file.html",
    type:"full"
}

从课堂上:

public class ModalOptions
{
    public object href { get; set; }
    public object type { get; set; }
}

这是可能的,但我建议不要这样做,因为它会产生无效的JSON,正如Marcelo和Marc在评论中指出的那样。

使用Json.NET库可以实现这一点,如下所示:

[JsonObject(MemberSerialization.OptIn)]
public class ModalOptions
{
    [JsonProperty]
    public object href { get; set; }

    [JsonProperty]
    public object type { get; set; }
}

序列化对象时使用JsonSerializer类型而不是静态JsonConvert类型。

例如:

var options = new ModalOptions { href = "file.html", type = "full" };
var serializer = new JsonSerializer();
var stringWriter = new StringWriter();
using (var writer = new JsonTextWriter(stringWriter))
{
    writer.QuoteName = false;
    serializer.Serialize(writer, options);            
}
var json = stringWriter.ToString();

这将产生:

{href:"file.html",type:"full"}

如果将JsonTextWriter实例的QuoteName属性设置为false,则不会再引用对象名称。

链接地址: http://www.djcxy.com/p/80929.html

上一篇: Serialize property name without quotes

下一篇: Is there any reason to have nested calls to $ (jQuery)?