C# 默认大写, 而大部分的前端默认小写, 这时候可以如此配置:
builder.Services.AddControllers().AddJsonOptions((opt) =>
{
opt.JsonSerializerOptions.PropertyNamingPolicy = System.Text.Json.JsonNamingPolicy.CamelCase;
opt.JsonSerializerOptions.WriteIndented = true;
});
JsonNamingPolicy 还有诸多配置方案. 下面介绍一些更加定制化的功能, 用控制台程序举例:
using JsonTest;
using System.ComponentModel;
using System.Text.Json;
using System.Text.Json.Serialization;
List<Teacher> teachers = new();
for (int i = 0; i < 5; i++)
{
teachers.Add(new()
{
Id = i + 1,
FullName = $"FullName{i}"
});
}
Student student = new()
{
Id = 1,
FullName = "James",
Description = "AAA",
workDays = WorkDays.Monday| WorkDays.Tuesday,
Teachers = teachers,
Date = DateTime.Now
};
JsonSerializerOptions options = new()
{
WriteIndented = true,
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
};
var a = JsonSerializer.Serialize<Student>(student, options);
Console.WriteLine(a);
class Student
{
//定制化, TableId的首字母不会应用CamelCase
[JsonPropertyName("TableId")]
public int Id { get; set; }
public string FullName { get; set; } = string.Empty;
/// <summary>
/// 序列化时忽略
/// </summary>
[JsonIgnore]
public string Description { get; set; } = string.Empty;
public DateTime Date { get; set; }
[JsonConverter(typeof(JsonStringEnumConverter))]
public WorkDays workDays { get; set; }
public List<Teacher> Teachers { get; set; } = new();
}
class Teacher
{
public int Id { get; set; }
public string FullName { get; set; } = string.Empty;
}
[Flags]
enum WorkDays
{
Monday = 1,
Tuesday = 2,
Wednesday = 4,
Thursday = 8,
Friday = 16,
Saturday = 32,
Sunday =64
}
结果: