我想配置 WebApi 的默認序列化程式,因此它應該保留類中的欄位名稱。
namespace ChimuLambdaApi.Controllers;
[ApiController]
[Microsoft.AspNetCore.Mvc.Route("[controller]")]
public class V1Controller : ControllerBase {
private readonly ILogger<V1Controller> _logger;
public V1Controller(ILogger<V1Controller> logger) => _logger = logger;
[Microsoft.AspNetCore.Mvc.HttpGet("map")]
public Beatmap GetBeatmap(long id) {
return new Beatmap() { };
}
}
namespace ChimuLambdaApi;
public class Beatmap {
public int BeatmapId { get; set; }
public double BPM { get; set; }
public float AR { get; set; }
public float OD { get; set; }
public float CS { get; set; }
public float HP { get; set; }
public string File { get; set; }
}
這是我從 WebApi 結果中得到的。
"beatmapId": 0,
"bpm": 0,
"ar": 0,
"od": 0,
"cs": 0,
"hp": 0,
"file": "string"
這就是我想要得到的。
"BeatmapId": 0,
"BPM": 0,
"AR": 0,
"OD": 0,
"CS": 0,
"HP": 0,
"File": "string"
uj5u.com熱心網友回復:
您可以JsonOptions在 Program.cs 中配置。使用下面的配置,PropertyNameCaseInsensitive就PropertyNamingPolicy可以實作你想要的功能:
builder.Services.Configure<JsonOptions>(o =>
{
o.JsonSerializerOptions.PropertyNameCaseInsensitive = false;
o.JsonSerializerOptions.PropertyNamingPolicy = null;
});
這將配置序列化程式以匹配您的類屬性的大小寫。如果您想要不同的外殼,您可以[JsonPropertyName]在屬性上使用屬性。
您可以在AddControllers使用builder.Services.AddControllers().AddJsonOptions(...).

但是,大多數客戶端/序列化程式默認配置為在發送/接收請求時使用 camelCase,因此您將來可以為自己(或使用您的 API 的其他人)引入更多作業。
uj5u.com熱心網友回復:
你可以這樣使用。也許代碼可以更有效地撰寫。
[Microsoft.AspNetCore.Mvc.HttpGet("map")]
public string GetBeatmap(long id) {
return JsonConvert.SerializeObject(new BeatMap(), Formatting.Indented, new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver()
});
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/416851.html
標籤:
