2010-02-18 23 views
16

Esperando que no tenga que reinventar la rueda aquí, pero ¿alguien sabe si hay una clase en C# similar a la proporcionada por Adobe para AS3 para convertir un objeto genérico en una cadena JSON?Codificar objeto a JSON

Por ejemplo, cuando codifico una matriz de objetos.

new JSONEncoder(arr).getString(); 

Salida:

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

posible duplicado de [Cómo crear cadena JSON en C#] (http://stackoverflow.com/questions/1056121/how-to-create-json-string-in-c-sharp) – nawfal

Respuesta

30

en C#:

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

'JavaScriptSerializer 'es un dolor de usar. Debería probar con [Json.Net] (http://james.newtonking.com/json) – Falanwe

+1

Agregue ** System.Web.Extensions ** en References vea [https://msdn.microsoft.com/fr -fr/library/system.web.script.serialization.javascriptserializer% 28v = vs.110% 29.aspx] – themadmax

3

Los siguientes métodos funcionan bien para mí (con el 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

mira esto DataContractJsonSerializer.

Use DataContractJsonSerializer para serializar y deserializar datos en el formato de JavaScript Object Notation (JSON). Este motor de serialización convierte los datos JSON en los casos de tipos de .NET Framework y de nuevo en datos JSON

7

I Recommand usando Json.NET. No forma parte de las bibliotecas principales de .Net, pero es muy utilizado, incluso por muchos productos de Microsoft. También es el más usado nuget package. Y es más fácil de usar que JavaScriptSerializer y más eficiente.

var jsonString = JsonConvert.SerializeObject(someObjet); 

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

Creo que es "SerializeObject" y no "Serialize" en la última versión – PSSGCSim

+1

@PSSGCSim tiene razón, Estoy actualizando mi respuesta – Falanwe

+0

También tuve que agregar '.ToString()' al final o produjo un error. 'var myObject = JsonConvert.DeserializeObject (jsonString.ToString());' – guitarlass