You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 6 Web API迁移后如何让返回结果与WCF格式一致

让.NET 6 Web API返回与WCF一致的JSON格式(大小写+属性顺序)

一、统一属性名称为PascalCase

.NET 6默认的System.Text.Json采用camelCase序列化,要改成和WCF一致的PascalCase,有两种方式:

全局配置(推荐)

在Program.cs中配置JSON序列化选项,禁用默认的驼峰命名规则:

builder.Services.AddControllers()
    .AddJsonOptions(options =>
    {
        // 直接使用类属性的原名称(PascalCase)
        options.JsonSerializerOptions.PropertyNamingPolicy = null;
    });

单独属性配置

若无需全局修改,可给实体类的单个属性指定JSON键名:

public class Country
{
    [JsonPropertyName("Id")]
    public int Id { get; set; }
    
    [JsonPropertyName("Name")]
    public string Name { get; set; }
    
    // 其他属性同理配置
}

二、保持属性顺序与WCF一致

WCF默认按类中属性的定义顺序序列化,而.NET 6的System.Text.Json默认按字母顺序排序属性,需通过以下两种方式调整:

方法1:用特性指定属性顺序

在实体类中给每个属性添加[JsonPropertyOrder]特性,按WCF返回的顺序指定序号:

public class Country
{
    [JsonPropertyOrder(1)]
    public bool Active { get; set; }
    
    [JsonPropertyOrder(2)]
    public string CountryKey { get; set; }
    
    [JsonPropertyOrder(3)]
    public int Id { get; set; }
    
    [JsonPropertyOrder(4)]
    public string Name { get; set; }
}

方法2:切换到Newtonsoft.Json(Json.NET)

Json.NET默认按属性定义顺序序列化,且原生支持PascalCase,无需额外配置:

  1. 安装NuGet包:Microsoft.AspNetCore.Mvc.NewtonsoftJson
  2. 在Program.cs中配置替换默认序列化器:
builder.Services.AddControllers()
    .AddNewtonsoftJson(options =>
    {
        // 可选:开启格式化输出,和示例格式对齐
        options.SerializerSettings.Formatting = Newtonsoft.Json.Formatting.Indented;
    });

总结

  • 若追求快速对齐,切换到NewtonsoftJson是最简便的方案,无需逐个修改实体类;
  • 若坚持使用默认的System.Text.Json,则需结合全局大小写配置+属性顺序特性来实现。

内容的提问来源于stack exchange,提问作者hey kish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 16:41:08