2012-07-05 22 views
37

Eventuali duplicati:
Turn C# object into a JSON string in .NET 4Converti oggetto di stringa JSON in C#

In Java, ho un codice per convertire oggetto Java per stringa JSON. Come fare il simile nel C#? quale libreria JSON dovrei usare?

Grazie.

codice Java

import net.sf.json.JSONArray; 
import net.sf.json.JSONObject; 

public class ReturnData { 
    int total; 

    List<ExceptionReport> exceptionReportList; 

    public String getJSon(){ 
     JSONObject json = new JSONObject(); 

     json.put("totalCount", total); 

     JSONArray jsonArray = new JSONArray(); 
     for(ExceptionReport report : exceptionReportList){ 
      JSONObject jsonTmp = new JSONObject(); 
      jsonTmp.put("reportId", report.getReportId());  
      jsonTmp.put("message", report.getMessage());    
      jsonArray.add(jsonTmp);   
     } 

     json.put("reports", jsonArray); 
     return json.toString(); 
    } 
    ... 
} 
+0

Si dovrebbe fare un tentativo in C# e mostraci il codice che stai provando. Come scritto, questa domanda è poco più di una ricerca su google a partire da una risposta, e non aggiunge valore al di sopra di questo. Modifica la tua domanda per includere ciò che hai provato in C# e cosa non funziona. –

+0

@George Stocker Sta chiedendo di serializzare e stai mostrando il duplicato di deserializzazione, perché? –

+0

@GovindKamalaPrakashMalviya Fuori dalla miriade di duplicati, ho letto male e ho scelto quello sbagliato. Grazie per averlo capito. –

risposta

74

ho usato Newtonsoft JSON.NET (Documentation) Esso consente di creare una classe/oggetto, compilare i campi, e serializzare come JSON.

public class ReturnData 
{ 
    public int totalCount { get; set; } 
    public List<ExceptionReport> reports { get; set; } 
} 

public class ExceptionReport 
{ 
    public int reportId { get; set; } 
    public string message { get; set; } 
} 


string json = JsonConvert.SerializeObject(myReturnData); 
+1

Ciao, questa risposta funziona, ma c'è un modo per serializzare l'oggetto in un formato javascript come nuovo {Name = "Myname"} sarebbe serializzato su {nome: "MyName"}. Grazie –

+1

@LexyFeito Vedo che nessuno ha risposto alla tua domanda. Usa: 'impostazioni var = nuovi JsonSerializerSettings {ContractResolver = new CamelCasePropertyNamesContractResolver()};' ' settings.Converters.Add (nuova StringEnumConverter());' ' var json = JsonConvert.SerializeObject (myReturnData, Formatting.Indented, impostazioni); ' – Kody

+0

Serbatoi di lavoro @@ –

36

Usa a .NET integrato JavaScriptSerializer

JavaScriptSerializer js = new JavaScriptSerializer(); 
    string json = js.Serialize(obj); 
+0

come gestire 'json.put ("totalCount", totale); '? – user595234