2011-11-01 62 views
6

我使用jsonconvert转换简单对象JSON像如何将对象转换为JSON与jsonconvert - 无 - 关键qoutations

JsonConvert.SerializeObject(new { label = "MyLabel1" }); 

{ "label":"MyLabel1" } 

,但我想拿到钥匙没有报价像

{ label: "MyLabel1"} 

有没有办法将对象转换为json withoud“key” - 通过使用jsonconv ERT?

+0

AFAIK,第二种形式不是JSON。你为什么想这样做? – svick

+0

我需要它的jQuery的情节插件“flot”.... –

+0

你确定flot将无法正确使用引号? – svick

回答

8

任何期望用于创建对象的JSON或实际JavaScript表示法(它是JSON的超集)都应该可以正确引用引号。

但是,如果您确实想删除它们,您可以将JsonTextWriter.QuoteName设置为false。这样做需要编写一些JsonConvert.SerializeObject()手动使用的代码:

private static string SerializeWithoutQuote(object value) 
{ 
    var serializer = JsonSerializer.Create(null); 

    var stringWriter = new StringWriter(); 

    using (var jsonWriter = new JsonTextWriter(stringWriter)) 
    { 
     jsonWriter.QuoteName = false; 

     serializer.Serialize(jsonWriter, value); 

     return stringWriter.ToString(); 
    } 
} 
+0

谢谢为你的努力 –

+0

@Spongman'StringWriter.Dispose()'什么都不做,所以我没有看到任何理由把它放到'using'中。 – svick

+0

它可能不会做任何事情_today_。但在未来它可能。面向未来的代码将不管调用Dispose。 – Spongman