/// <summary>
/// 从一个对象信息生成Json串
/// </summary>
/// <param name="obj"></param>
/// <returns></returns>
public static string ObjectToJson(object obj)
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
MemoryStream stream = new MemoryStream();
serializer.WriteObject(stream, obj);
byte[] dataBytes = new byte[stream.Length];
stream.Position = 0;
stream.Read(dataBytes, 0, (int)stream.Length);
return Encoding.UTF8.GetString(dataBytes, 0, dataBytes.Length);
}
传进来的对象,有些属性为NULL,我希望在序列化前,能把NULL的属性过滤掉,该怎么做?
1.自定义序列化类,从DataContractJsonSerializer类继承,重写某些方法(具体重写哪些方法我也不知道,没使用过)。
2.取得obj的每个非NULL的属性值,赋给一个新的变量,然后再对新变量进行序列化
以上未实践过,仅供参考。
谢谢
用Json.Net,在调用JsonConvert.SerializeObject()时使用NullValueHandling.Ignore:
string ignored = JsonConvert.SerializeObject( movie, Formatting.Indented, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore });
大致意思明白了,可不知道该怎么写,有类似的解决方案吗
nuget会用吗?
1 public JsonResult GetPersonInfo() 2 { 3 var person = new 4 { 5 Name = "张三", 6 Age = 22, 7 Sex = "男" 8 }; 9 return Json(person,JsonRequestBehavior.AllowGet); 10 }
/*把person替换成Linq筛选出的数据*/
使用json.net吧,很好用。