2010-02-18 33 views
16

Sperando di non dover reinventare la ruota qui ma qualcuno sa se esiste una classe in C# simile a quella fornita da Adobe per AS3 per convertire un oggetto generico in una stringa JSON?Codifica oggetto su JSON

Ad esempio, quando codifico una matrice di oggetti.

new JSONEncoder(arr).getString(); 

uscita:

[ 
    {"type":"mobile","number":"02-8988-5566"}, 
    {"type":"mobile","number":"02-8988-5566"} 
] 
+0

possibile duplicato di [Come creare stringa JSON in C#] (http://stackoverflow.com/questions/1056121/how-to-create-json-string-in-c-sharp) – nawfal

risposta

30

in C#:

var jsonSerializer = new System.Web.Script.Serialization.JavaScriptSerializer(); 
      string json = jsonSerializer.Serialize(yourCustomObject); 
+0

'JavaScriptSerializer 'è un dolore da usare. Dovresti provare a [Json.Net] (http://james.newtonking.com/json) – Falanwe

+1

Aggiungi ** System.Web.Extensions ** in Riferimenti vedi [https://msdn.microsoft.com/fr -fr/library/system.web.script.serialization.javascriptserializer% 28v = vs.110% 29.aspx] – themadmax

3

I seguenti metodi funzionano bene per me (utilizzando il JavaScriptSerializer):

public static T FromJson<T>(string input) 
{ 
    JavaScriptSerializer serializer = new JavaScriptSerializer(); 
    return serializer.Deserialize<T>(input); 
} 

public static string ToJson(object input) 
{ 
    JavaScriptSerializer serializer = new JavaScriptSerializer(); 
    return serializer.Serialize(input); 
} 
3

check this out DataContractJsonSerializer.

Utilizzare DataContractJsonSerializer per serializzare e deserializzare i dati nel formato JSON (JavaScript Object Notation). Questo motore di serializzazione converte i dati JSON in istanze di tipi .NET Framework e di nuovo in dati JSON

7

Consiglierei utilizzando Json.NET. Non fa parte di .Net è la libreria di base, ma è ampiamente utilizzata, incluso da molti prodotti Microsoft. Inoltre è il singolo più utilizzato nuget package. Ed è sia più facile da usare rispetto a JavaScriptSerializer e più efficiente.

var jsonString = JsonConvert.SerializeObject(someObjet); 

var myObject = JsonConvert.DeserializeObject<MyType>(jsonString); 
+0

Credo che sia "SerializeObject" e non "Serialize" nell'ultima versione – PSSGCSim

+1

@PSSGCSim hai ragione, Sto aggiornando la mia risposta – Falanwe

+0

Ho anche dovuto aggiungere '.ToString()' alla fine o ha prodotto un errore. 'var myObject = JsonConvert.DeserializeObject (jsonString.ToString());' – guitarlass