首页 新闻 赞助 找找看

C# 对象转jSON 时 过滤 NULL 的属性

0
[待解决问题]
/// <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的属性过滤掉,该怎么做?
逍遥剑123的主页 逍遥剑123 | 菜鸟二级 | 园豆:202
提问于:2015-05-13 15:39
< >
分享
所有回答(5)
0

1.自定义序列化类,从DataContractJsonSerializer类继承,重写某些方法(具体重写哪些方法我也不知道,没使用过)。

2.取得obj的每个非NULL的属性值,赋给一个新的变量,然后再对新变量进行序列化

 

以上未实践过,仅供参考。

谢谢

kK_wen | 园豆:198 (初学一级) | 2015-05-13 15:54
1

用Json.Net,在调用JsonConvert.SerializeObject()时使用NullValueHandling.Ignore:

string ignored = JsonConvert.SerializeObject(
      movie,
      Formatting.Indented,
      new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore });

详见:Reducing Serialized JSON Size

dudu | 园豆:31075 (高人七级) | 2015-05-13 16:54

大致意思明白了,可不知道该怎么写,有类似的解决方案吗

支持(0) 反对(0) 逍遥剑123 | 园豆:202 (菜鸟二级) | 2015-05-14 11:06
0

nuget会用吗?

小小高 | 园豆:1095 (小虾三级) | 2015-05-15 09:41
0
 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筛选出的数据*/
新手9527 | 园豆:211 (菜鸟二级) | 2015-05-25 18:02
0

使用json.net吧,很好用。

凝冰 | 园豆:685 (小虾三级) | 2015-11-27 17:14
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册