Newtonsoft.Json 对象序列化并设置首字母小写的2种方法

C# 2020-03-13 阅读 604 评论 0

使用 C# 依赖 Newtonsoft.Json 的 JsonConvert.SerializeObject方法,将对象转换为 JSON 字符串,会按照对象的属性名称作为键输出,一般情况下属性名称是以大写字母开头,有时候需要字段按其他格式转换,如驼峰、下划线,或者其他自定义格式。下面介绍2种方法。假设有一个实体类 Person。定义如下。

class Person
{
    public string UserName { get; set; }
    public int Age { get; set; }
}

1. 使用 JsonSerializerSettings 设置

使用 CamelCasePropertyNamesContractResolver 设置驼峰命名样式,即第一个字母小写。

static void Main(string[] args)
{
    Person person = new Person();
    person.UserName = "名字";
    person.Age = 20;

    var serializerSettings = new JsonSerializerSettings();
    serializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
    var json = JsonConvert.SerializeObject(person, serializerSettings);
    Console.WriteLine(json);
}

以上将输出:

{"userName":"名字","age":20}

2. 使用 JsonProperty

修改 Person 类,添加 JsonProperty,可以指定任何格式的输出,这种控制方式高度自由。

class Person
{
    [JsonProperty("user_name")]
    public string UserName { get; set; }

    [JsonProperty("age")]
    public int Age { get; set; }
}

然后直接序列化即可。

static void Main(string[] args)
{
    Person person = new Person();
    person.UserName = "名字";
    person.Age = 20;

    var json = JsonConvert.SerializeObject(person);
    Console.WriteLine(json);
}

以上将输出:

{"user_name":"名字","age":20}
最后更新 2020-03-13
MIP.watch('startSearch', function (newVal, oldVal) { if(newVal) { var keyword = MIP.getData('keyword'); console.log(keyword); // 替换当前历史记录,新增 MIP.viewer.open('/s/' + keyword, {replace: true}); setTimeout(function () { MIP.setData({startSearch: false}) }, 1000); } }); MIP.watch('goHome', function (newVal, oldVal) { MIP.viewer.open('/', {replace: false}); });