在Azure Functions的.NET Core C#中将JSON转换为HubSpot表单提交API要求格式的技术求助
解决HubSpot表单提交格式转换问题
嗨,你已经完成了把输入JSON转成字典的关键一步,接下来只需要把这个键值对结构映射成HubSpot要求的fields数组格式就行,我给你两种实用的实现方案:
方式一:用强类型类实现(推荐,更易维护)
先定义和HubSpot输出结构匹配的实体类,这样序列化逻辑更清晰,后续扩展也方便:
// 对应HubSpot单个字段的结构 public class HubSpotField { [JsonProperty("name")] public string Name { get; set; } [JsonProperty("value")] public string Value { get; set; } } // 对应HubSpot表单提交的完整请求结构 public class HubSpotFormSubmission { [JsonProperty("fields")] public List<HubSpotField> Fields { get; set; } }
接着基于你已有的dictionary完成转换并序列化:
// 将字典的键值对转成HubSpot字段列表 var hubSpotFields = dictionary.Select(kv => new HubSpotField { Name = kv.Key, Value = kv.Value }).ToList(); // 包装成完整的请求对象 var submissionRequest = new HubSpotFormSubmission { Fields = hubSpotFields }; // 序列化为目标JSON字符串 string outputJson = JsonConvert.SerializeObject(submissionRequest, Formatting.Indented);
方式二:用匿名类型快速实现(适合简单场景)
如果不想额外定义类,也可以直接用匿名类型构造目标结构:
var submissionRequest = new { fields = dictionary.Select(kv => new { name = kv.Key, value = kv.Value }) }; string outputJson = JsonConvert.SerializeObject(submissionRequest, Formatting.Indented);
小补充
两种方案都能生成你需要的输出格式,强类型方案的优势在于后续如果HubSpot字段规则变化,或者需要添加字段验证逻辑时,调整起来更省心;要是你用的是.NET Core 3.0+的System.Text.Json,只需要把JsonConvert替换成JsonSerializer,对应的特性换成JsonPropertyName就可以兼容。
内容的提问来源于stack exchange,提问作者NewToAmadeus
相关产品推荐
相关产品推荐

