Post API请求体字符串插值配置问题求助
问题解决:C#字符串拼接JSON请求体错误
错误原因
你手动拼接JSON时,字符串插值中的JSON大括号{}没有正确转义。C#字符串插值语法中,{和}是插值表达式的边界标记,直接写会被编译器识别为插值逻辑而非普通JSON字符,导致生成的JSON格式错误或编译报错。
解决方案
方案1:修正字符串插值的转义
将JSON的大括号用双大括号{{}}转义,确保编译器将其作为普通字符输出:
var strStartDateZulu = strStartDate + "Z"; return await MakeApiCallAsync("RequestFileAsync", string.Empty, HttpMethod.Post, $"{{\"format\":\"csv\", \"compress\":\"false\", \"startDate\":\"{strStartDateZulu}\"}}", false);
方案2:推荐使用序列化生成JSON(更安全可靠)
避免手动拼接JSON,用匿名对象结合System.Text.Json序列化生成请求体,彻底杜绝格式错误:
// 定义请求体对象 var requestBody = new { format = "csv", compress = "false", startDate = strStartDate + "Z" }; // 序列化为JSON字符串 var jsonBody = System.Text.Json.JsonSerializer.Serialize(requestBody); // 调用API return await MakeApiCallAsync("RequestFileAsync", string.Empty, HttpMethod.Post, jsonBody, false);
这种方式无需手动处理转义,后续修改字段更方便,还能避免因拼写错误导致的JSON格式问题。
内容的提问来源于stack exchange,提问作者Dev101684
相关产品推荐
相关产品推荐

