Json.Net – 不带引号的Serialize属性名称

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

它只是大型Json渲染的一小部分,所以我更喜欢添加属性属性,或者覆盖类的序列化方法。

目前,它呈现如下:

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

而且我希望得到它像:( hreftype没有引号)

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

来自class级:

 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,则将不再引用对象名称。