在aspNetCore中 使用System.Text.Json的定制功能, 将定制化的json返回给前端

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
    }

结果:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

潘诺西亚的火山

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值