2011-11-01 15 views
6

io uso jsonconvert per convertire gli oggetti semplici per JSON comecome convertire oggetto JSON con jsonconvert - senza - chiave qoutations-

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

a

{ "label":"MyLabel1" } 

ma voglio ottenere le chiavi, senza citazione come

{ label: "MyLabel1"} 

c'è un modo per convertire gli oggetti a jSON withoud -quotations "chiave" utilizzando jsonconv ert?

+0

per quanto ne so, la seconda forma non è JSON. Perché vuoi farlo? – svick

+0

ne ho bisogno per jquery plot-plugin "flot" .... –

+0

Sei sicuro che flot non funzionerà correttamente con le virgolette? – svick

risposta

8

Qualsiasi libreria che si aspetta JSON o notazione JavaScript effettiva per la creazione di oggetti (che è un superset di JSON) dovrebbe funzionare correttamente con le virgolette.

Ma se si desidera veramente rimuoverli, è possibile impostare JsonTextWriter.QuoteName su falso. Fare questo richiede la scrittura del codice che utilizza JsonConvert.SerializeObject() a mano:

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

Grazie per il tuo sforzo –

+0

@Spongman 'StringWriter.Dispose()' non fa nulla, quindi non vedo alcun motivo per metterlo in 'using'. – svick

+0

non può fare nulla _oggi_. ma in futuro potrebbe. il codice a prova di futuro chiamerà Dispose a prescindere. – Spongman

Problemi correlati