Cómo eliminar el valor nulo en la cadena json

Hola, estoy usando la clase de abajo

Public List name; Public List midname; 

Una vez que lo serialice me sale la siguiente salida como

  {"name":[hari],"midname":null} 

Pero quiero que mi respuesta sea así.

 {"name":[hari]} 

No debería mostrar el atributo de clase que tiene un valor nulo y estoy usando c # .net framework.

La respuesta completa depende de cómo está serializando su clase.

Si está utilizando contratos de datos para serializar sus clases, establezca EmitDefaultValue = false

 [DataContract] class MyClass { [DataMember(EmitDefaultValue = false)] public List name; [DataMember(EmitDefaultValue = false)] public List midname { get; set; } } 

Si está utilizando Json.Net , intente esto en su lugar

 class MyClass { [JsonProperty(NullValueHandling = NullValueHandling.Ignore)] public List name; [JsonProperty(NullValueHandling = NullValueHandling.Ignore)] public List midname { get; set; } } 

O JsonSerializerSettings.NullValueHandling = NullValueHandling.Ignore globalmente con JsonSerializerSettings.NullValueHandling = NullValueHandling.Ignore

Si está utilizando Json.Net , puede probar esto Json.Net su propiedad de esta manera.

 [JsonProperty(NullValueHandling = NullValueHandling.Ignore)] public List name { get; set; } 
 private class NullPropertiesConverter : JavaScriptConverter { public override object Deserialize(IDictionary dictionary, Type type, JavaScriptSerializer serializer) { throw new NotImplementedException(); } public override IDictionary Serialize(object obj, JavaScriptSerializer serializer) { var jsonExample = new Dictionary(); foreach (var prop in obj.GetType().GetProperties()) { //check if decorated with ScriptIgnore attribute bool ignoreProp = prop.IsDefined(typeof(ScriptIgnoreAttribute), true); var value = prop.GetValue(obj, BindingFlags.Public, null, null, null); if (value != null && !ignoreProp) jsonExample.Add(prop.Name, value); } return jsonExample; } public override IEnumerable SupportedTypes { get { return GetType().Assembly.GetTypes(); } } } 

Lo siguiente es cómo utilizará lo anterior e ignorará los valores nulos.

 var serializer = new JavaScriptSerializer(); serializer.RegisterConverters(new JavaScriptConverter[] { new NullPropertiesConverter() }); return serializer.Serialize(someObjectToSerialize); 

Fuente

string signatureJson = JsonConvert.SerializeObject (signature, Newtonsoft.Json.Formatting.Indented, nuevo JsonSerializerSettings {NullValueHandling = NullValueHandling.Ignore});

Como dijo pswg, es mejor serializar correctamente en primer lugar. Un ejemplo de serialización sin nulos se puede ver aquí.

p.ej

 var json = JsonConvert.SerializeObject( objectToSerialize, new JsonSerializerSettings {NullValueHandling = NullValueHandling.Ignore});