wang_0209 2018-05-21 23:32 采纳率: 33.3%
浏览 4085
已结题

C# 实体类转json时过滤null值

图片说明

如上图,实体类转json的时候,怎么才能去掉null值。

  • 写回答

7条回答 默认 最新

  • 斯洛文尼亚旅游 2018-05-21 23:37
    关注
    评论
  • 叫兽-郭老师 Java领域新星创作者 2018-05-22 00:17
    关注

    用Json.Net,在调用JsonConvert.SerializeObject()时使用NullValueHandling.Ignore:
    string ignored = JsonConvert.SerializeObject(
    movie,
    Formatting.Indented,
    new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore });
    详见:Reducing Serialized JSON Size

    评论
  • 叫兽-郭老师 Java领域新星创作者 2018-05-22 00:19
    关注

    这个也行:
    要将一个对象序列化,可是如果对象的属性为null的时候,我们想将属性为null的都去掉。
    在这里我使用Newtonsoft.Json.dll
    记录一下序列化以及反序列化
    json字符串转对象
    Model model=JsonConvert.DeserializeObject(val);
    将对象转化为json格式字符串
    string jsonString = JsonConvert.SerializeObject(obj);
    那么如何序列化为json时过滤掉NULL呢??
    var jsonSetting = new JsonSerializerSettings {NullValueHandling = NullValueHandling.Ignore};

    var json = JsonConvert.SerializeObject(data, Formatting.Indented, jsonSetting);
    直接这样JsonConvert.SerializeObject(obj);序列化结果

    "MemberQuery": {
    "PhoneNumber": "13222222222",
    "Name": "test",
    "MF": "女",
    "BirthDate": "01/01/2017",
    "MaritalStatus": null,
    "Country": null
    }

    过滤掉NULL序列化结果:

    "MemberQuery": {
    "PhoneNumber": "13222222222",
    "Name": "test",
    "MF": "女",
    "BirthDate": "01/01/2017"
    }

    展开全部

    评论
  • qq_38960786 2018-05-22 00:30
    关注

    用Newtonsoft这个类库,用JObject ju = JObject.Parse(jsonstr);把变量jsonstr里的json字符串转换成对象,用键值取值:ju["rankNo"].ToString()。
    如果对应值是null,返回的是空白字符串。

    评论
  • wdf1234wdf 2018-05-22 00:55
    关注

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

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

    评论
  • linpengfeixgu 2018-05-22 01:07
    关注

    ///
    /// List转成json 数据共用方法,根据传属性名得到相关转换
    ///
    /// 转换的实体集合
    /// 实体类对应的属性
    /// 转换后的属性显示名
    ///
    public static string GetJsonData(IList list, string propertyName, string jsonShowName)
    {
    string[] propertyNameArr = propertyName.Split(',');//实体类属性
    string[] jsonShowNameArr = jsonShowName.Split(',');//转化为UI实用属性名

    1. StringBuilder Json = new StringBuilder();
    2. Json.Append("[");
    3. if (list.Count > 0)
    4. {
    5. for (int i = 0; i < list.Count; i++)
    6. {
    7. Type type = list[i].GetType();
    8. Json.Append("{");
    9. for (int j = 0; j < propertyNameArr.Length; j++)
    10. {
    11. PropertyInfo property = type.GetProperty(propertyNameArr[j]);
    12. if (property != null)
    13. {
    14. Json.Append(jsonShowNameArr[j]);
    15. if ("content".IndexOf(jsonShowNameArr[j]) >= 0)
    16. {
    17. Json.Append(":");
    18. }
    19. else
    20. {
    21. Json.Append(":'");
    22. }
    23. Json.Append(StringFormat(property.GetValue(list[i], null) == null ? "" : property.GetValue(list[i], null).ToString(), type));
    24. if ("content".IndexOf(jsonShowNameArr[j]) >= 0)
    25. {
    26. //Json.Append("");
    27. }
    28. else
    29. {
    30. Json.Append("'");
    31. }
    32. }
    33. if (j < propertyNameArr.Length - 1)
    34. {
    35. Json.Append(",");
    36. }
    37. }
    38. Json.Append("}");
    39. if (i < list.Count - 1)
    40. {
    41. Json.Append(",");
    42. }
    43. }
    44. }
    45. Json.Append("]");
    46. return Json.ToString();
    47. }

    展开全部

    评论
  • qq_40517985 2018-05-22 22:47
    关注

    应该用Newtonsoft这个类库吧

    评论
编辑
预览

报告相同问题?

悬赏问题

  • ¥15 宝塔面板一键迁移使用不了
  • ¥15 求一个按键录像存储到内存卡的ESP32CAM代码
  • ¥15 如何单独修改下列canvas推箱子代码target参数?,插入图片代替其形状,就是哪个绿色的圆圈每关用插入的图片替代
  • ¥20 四叉树的创建和输出问题
  • ¥15 javaweb连接数据库,jsp文件加载不出来
  • ¥15 matlab关于高斯赛德尔迭代的应用编撰。(相关搜索:matlab代码|迭代法)
  • ¥15 损失匹配问题,求解答
  • ¥15 3500常用汉字书法体检测数据集下载
  • ¥15 odoo17在制造模块或采购模块良品与次品如何分流和在质检模块下如何开发
  • ¥15 Qt音乐播放器的音乐文件相对路径怎么写
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部