/// <summary>
/// 把对象null转换{}为JSON字符串
/// </summary>
/// <param name="o">对象</param>
/// <returns>JSON字符串</returns>
public static string ObjectToJsonNullValue(this object data)
{
try
{
if (data == null)
{
return null;
}
var jsonSetting = new JsonSerializerSettings();
jsonSetting.ContractResolver = new NullToEmptyStringResolver();
var json = JsonConvert.SerializeObject(data, jsonSetting);
return json;
}
catch (Exception)
{ return null;
}
} public class NullToEmptyStringResolver : Newtonsoft.Json.Serialization.DefaultContractResolver
{
protected override IList<Newtonsoft.Json.Serialization.JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization)
{
return type.GetProperties()
.Select(p => {
var jp = base.CreateProperty(p, memberSerialization);
jp.ValueProvider = new NullToEmptyStringValueProvider(p);
return jp;
}).ToList();
}
}
public class NullToEmptyStringValueProvider : Newtonsoft.Json.Serialization.IValueProvider
{
PropertyInfo _MemberInfo;
public NullToEmptyStringValueProvider(PropertyInfo memberInfo)
{
_MemberInfo = memberInfo;
}
public object GetValue(object target)
{
object result = _MemberInfo.GetValue(target);
if (_MemberInfo.PropertyType.BaseType == typeof(object))
{
if (_MemberInfo.PropertyType != typeof(string)&&result==null)
{
result =new Newtonsoft.Json.Linq.JObject();
}
}
return result;
}
public void SetValue(object target, object value)
{
_MemberInfo.SetValue(target, value);
}
}

C# Newtonsoft.Json null 转空值{} 把对象null转换{}为JSON字符串的更多相关文章

  1. C#中对象,字符串,dataTable、DataReader、DataSet,对象集合转换成Json字符串方法。

    C#中对象,字符串,dataTable.DataReader.DataSet,对象集合转换成Json字符串方法. public class ConvertJson { #region 私有方法 /// ...

  2. json中把非json格式的字符串转换成json对象再转换成json字符串

    JSON.toJson(str).toString()假如key和value都是整数的时候,先转换成jsonObject对象,再转换成json字符串

  3. JSON详解以及可以把javabean转换成json串的json-lib应用

    JSON 1. json是什么 它是js提供的一种数据交换格式! 2. json的语法 {}:是对象! 属性名必须使用双引号括起来!单引不行!!! 属性值:null,数值,字符串,数组:使用[]括起来 ...

  4. C#中的DataSet、string、DataTable、对象转换成Json的实现代码

    C#中对象,字符串,dataTable.DataReader.DataSet,对象集合转换成Json字符串方法. public class ConvertJson { #region 私有方法 /// ...

  5. .net core 1.1.0 MVC 控制器接收Json字串 (JObject对象) (一)

    .net core 1.1.0 MVC 控制器接收Json字串 (JObject对象) (二) Json是WEB交互常见的数据,.net core 处理方式是转为强类型,没有对应的强类型会被抛弃,有时 ...

  6. JSon_零基础_005_将po(bean)对象集合List转换为JSon格式的对象字符串,返回给界面

    将po(bean)对象集合List转换为JSon格式的对象字符串,返回给界面 导入jar包: 编写:po(bean)代码: package com.west.webcourse.po; /** * 第 ...

  7. python爬虫requests json与字典对象互相转换

    import requests import json ''' json.loads(json_str) json字符串转换成字典 json.dumps(dict) 字典转换成json字符串 ''' ...

  8. legend---八、php对象如何转换成js对象

    legend---八.php对象如何转换成js对象 一.总结 一句话总结:a.直接转换:b.通过json对象做中间桥梁 1.为什么传递给父亲构造函数的参数不能写默认值? 这里的第三行的比如$type不 ...

  9. JQuery将form表单值转换成json字符串函数

    由于后台接口限定,必须要将表单内容转换成json字符串提交,因此写了一个将form表单值转成json字符串的函数.     前提:页面引入了JQuery          下面直接上代码 一.代码 / ...

  10. json格式转换(json,csjon)(天气预报)

    json格式数据默认为string,可以使用eval()函数或者json模块将其转换为dict.标准Json字符串必须使用双引号(")而不能使用单引号('),否则从字符串转换成dict类型会 ...

随机推荐

  1. C# 计算代码的运行时间

    用法 主要通过Stopwatch类来实现... 在开发.调试.测试.分析中非常实用. Stopwatch sw = new Stopwatch(); sw.Start(); // 某些耗时的计算或任务 ...

  2. C# using 别名

    场景重现 当using的多个库出现类名重复的情况时... 解决办法 使用类的完全限定名称,例如: // 不需要using,避免using名称重复导致的异常 // 使用类的完全限定名称,俗称全名. Sy ...

  3. Selenium+pytest 页面对象模型框架

    下载地址:https://gitee.com/xiaopo1998/web_ui_test.git Selenium 页面对象模型框架使用说明 本框架基于 Selenium WebDriver 实现了 ...

  4. MySQL 数据库的性能优化方法有哪些?

    MySQL 数据库性能优化是提高数据库响应速度和处理能力的重要手段.性能优化可以从多个层面入手,涵盖数据库设计.查询优化.硬件资源优化.配置调整等方面.以下是 MySQL 数据库常见的性能优化方法: ...

  5. Junit单元测试的Gradle设置

    官方文档 https://docs.gradle.org/current/userguide/java_testing.html test{ useJUnit() //指定使用junit执行测试. / ...

  6. 访问项目resource/static目录下的模板文件(解决Docker部署后访问不到的问题)

    使用ClassPathResource方式获取static下的文件(别的方式本地可以访问到,Docker部署后不行) final String templatePath = "/static ...

  7. df -h命令卡住 怎么办

    df -h命令卡住 命令行输入df -h却发现一直卡在那里,有可能是挂载出了问题. 这种问题,大概率是由于 mount 的目录被删除了,但是没有提前执行 umount 操作,因此报错! 解决方法: 1 ...

  8. 【笔记】Python3|(一)Python 申请并调用国内百度、阿里、腾讯、有道的翻译 API 的教程和测试情况(第三方库 translate 和 腾讯 API 篇)

    var code = "dccf4c95-7458-4b38-b8ae-d45b3e59c218" 价格和 API 申请参考: 免费翻译接口最新最全汇总(百度翻译,腾讯翻译,谷歌翻 ...

  9. CLion打开VS创建的GBK编码格式的项目中文乱码问题的解决方法

    在 CLion 中设置 GBK 编码用于编译代码时,如果输出的 message 乱码,通常是由于控制台编码与代码文件的编码不匹配导致的.以下是解决问题的步骤: 1. 设置文件编码为 GBK 确保你的源 ...

  10. k8sd之pod生命周期

    pod生命周期: 状态:pending 挂起 没有节点满足条件 running 运行 Failed sucess unkonwn pod生命周期中的重要行为: 初始化容器 容器探测:liveness ...