Json.Net – 不带引号的Serialize属性名称
我试图让Json.Net序列化一个没有引号的属性名称,并且发现很难在Google上找到文档。 我怎样才能做到这一点?
它只是大型Json渲染的一小部分,所以我更喜欢添加属性属性,或者覆盖类的序列化方法。
目前,它呈现如下:
"event_modal": { "href":"file.html", "type":"full" }
而且我希望得到它像:( href
和type
没有引号)
"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,则将不再引用对象名称。