簡體   English   中英

Web Api serializer serialize object to camel-case Z466DEEC76ECDF5FCA6D5438571F6Z2

[英]Web Api serializer serialize object to camel-case json

請考慮以下代碼:

var ResultMaster = new Master()
{
    Id = Result.Id,
    CityCode = Result.CityCode,
    Desc = Result.Desc,
    EmployeeId = Result.EmployeeId,
    IsDelete = Result.IsDelete,
    LastChange = Result.LastChange,
    StateCode = Result.StateCode,
};

return Ok(ResultMaster);

當我調用我的 Web API 方法時,我得到了駱駝套 json:

'{"id":1,"cityCode":"001","desc":null,"employeeId":36648,"isDelete":false,"lastChange":"2021-11-25","stateCode":"01"}'

所以我可以使用反序列化它

System.Text.Json.JsonSerializer.Deserialize<T>

public static async Task<T?> GetObjectFromResponse<T>(this Task<HttpResponseMessage> responseMessage)
{
      var Response = await responseMessage;
      string StringContent = await Response.Content.ReadAsStringAsync();
      var Obj = JsonSerializer.Deserialize<T>(StringContent);
      //var Obj = JsonSerializer.Deserialize<T>("{\"Id\":1,\"CityCode\":\"001\",\"Desc\":null,\"EmployeeId\":36648,\"IsDelete\":false,\"LastChange\":\"2021-11-25\",\"StateCode\":\"01\"}");
      return Obj;
}

我在我的 Blazor WASM 中調用上述方法,如下所示:

var Master = await _httpClient.GetAsync($"/api/Ques/GetObject?id={id}").GetObjectFromResponse<MasterDTO>();
return Master;

我 qet 空Master object (非空)。 但是,如果我將屬性名稱更改為 Pascal-case(上面的注釋代碼),那么我會得到正確的 object。

如何為我的 API 序列化程序設置配置保留屬性名稱?

謝謝

只需在ConfigureServices部分添加此代碼:

services.AddControllers()
        .AddJsonOptions(options => 
        {
            options.JsonSerializerOptions.PropertyNamingPolicy = null;
        });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM