json null

{
"ResourceId": 0,
"JsonKey": "Account",
"GroupId": 21,
"Locale": "en-US",
"JsonValue": {
"Columns": {
"2": "2",
"Title": "343434"
},
"Labels": {},
"Others": {},
"Tips": {}
}
}

 

 

第一种:使用对象的字段属性设置JsonProperty来实现(不推荐,因为需要手动的修改每个字段的属性)

?
1
2
3
4
5
6
7
public class UserInfo
{
   [JsonProperty( "id" )]
   public int Id{ set ; get ; }
   [JsonProperty( "userName" )]
   public string UserName{ set ; get ; }
}

 第二种:使用newtonsoft.json来设置格式化的方式(推荐使用)

?
1
2
3
4
5
6
7
var user = new { Name = "john" , Age = 19 };
  var serializerSettings = new JsonSerializerSettings
       {
         // 设置为驼峰命名
         ContractResolver = new CamelCasePropertyNamesContractResolver()
       };
var userStr = JsonConvert.SerializeObject(user, Formatting.None, serializerSettings);

 

 

 

 

26down voteaccepted

This should work:

var settings = new JsonSerializerSettings() { ContractResolver= new NullToEmptyStringResolver() }; var str = JsonConvert.SerializeObject(yourObj, settings);

public class NullToEmptyStringResolver : Newtonsoft.Json.Serialization.DefaultContractResolver { protected override IList<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 : IValueProvider { PropertyInfo _MemberInfo; public NullToEmptyStringValueProvider(PropertyInfo memberInfo) { _MemberInfo = memberInfo; } public object GetValue(object target) { object result = _MemberInfo.GetValue(target); if (_MemberInfo.PropertyType == typeof(string) && result == null) result = ""; return result; } public void SetValue(object target, object value) { _MemberInfo.SetValue(target, value); } }

转载于:https://www.cnblogs.com/zwei1121/p/9644964.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值