如何使用JsonContent.Create处理@odata.id这类无效C#标识符属性?
解决JsonContent.Create处理特殊JSON属性的问题
针对@odata.id这类不符合C#标识符规则的JSON属性,有两种常用方法可以用JsonContent.Create生成对应的请求体:
方法一:匿名类型结合JsonPropertyName特性
利用C# 10及以上支持的匿名类型属性特性标注,指定JSON序列化后的属性名:
using System.Text.Json.Serialization; // 构建请求 using var message = new HttpRequestMessage(HttpMethod.Post, myUrl); message.Content = JsonContent.Create(new { [JsonPropertyName("@odata.id")] = "https://graph.microsoft.com/v1.0/directoryObjects/46026638-208d-4c03-bb85-d42f0c472484" });
这种方式保留了匿名类型的简洁性,同时能精准控制JSON输出的属性名,类型更安全。
方法二:使用Dictionary<string, object>
直接用字典存储键值对,键可以是任意字符串,完美适配特殊命名的JSON属性:
// 构建请求体字典 var requestPayload = new Dictionary<string, object> { { "@odata.id", "https://graph.microsoft.com/v1.0/directoryObjects/46026638-208d-4c03-bb85-d42f0c472484" } }; // 创建请求 using var message = new HttpRequestMessage(HttpMethod.Post, myUrl); message.Content = JsonContent.Create(requestPayload);
这种方式灵活性更高,适合属性数量多、命名复杂或动态生成请求体的场景。
内容的提问来源于stack exchange,提问作者Vaccano
相关产品推荐
相关产品推荐

