簡體   English   中英

為什么 Azure 函數 JSON 序列化將 class 屬性名稱轉換為駝峰和小寫?

[英]Why does Azure Functions JSON serialisation convert class property names to camel case and lower case?

我有一個 Azure Function V4。 是一個Http觸發function返回IActionResult。 我對 output JSON 的期望應該是與 C# class 的屬性名稱完全匹配的屬性名稱。但是 JSON 序列化將屬性名稱轉換為駝峰大小寫和小寫字母。

我希望 JSON object 屬性名稱字母大小寫與 model 的 C# class 成員名稱完全匹配。

C# Object

public string JobId { get; set; }
public List<Contact> Contacts { get; set; }
public Tags Tags { get; set; }
    

public class Contact
{
    public string firstName { get; set; }
}
    
public class Tags
{
    public string GROUPCONTACT { get; set; }
}

JSON 結果實際

{
    "jobId": null,
    "contacts": [
        {
            "firstName": "dummy"
        }
    ],
    "tags": {
        "groupcontact": "dummy"
    }
}

預期 JSON 結果

{
    "JobId": null,
    "Contacts": [
        {
            "firstName": "dummy"
        }
    ],
    "Tags": {
        "GROUPCONTACT": "dummy"
    }
}

正如評論中提到的@dbc ,您必須指定PropertyNamingPolicy = null而不是PropertyNamingPolicy = JsonNamingPolicy.CamelCase以保持屬性名稱不變。

var serializeOptions = new JsonSerializerOptions 
{
 PropertyNamingPolicy = null 
};

如果您使用的是駝峰式屬性命名策略( PropertyNamingPolicy = JsonNamingPolicy.CamelCase ),則可以使用[JsonPropertyName]屬性來覆蓋屬性名稱,如下所示:


    public class Contact
    {
        public string firstName { get; set; }
    }
        
    public class Tags
    {
        [JsonPropertyName(Details)]
        public string GROUPCONTACT { get; set; }
    }

Output:


    {
        "contacts": [
            {
                "firstName": "XXXXX"
            }
        ],
        "tags": {
            "Details": "XXXXX"
        }
    }

暫無
暫無

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

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