如何将double类型值传入带UserAddTime根对象的JSON字符串?
解决JSON字符串拼接错误的方案
方法1:使用JSON序列化工具(推荐)
手动拼接JSON字符串容易出现语法错误、格式不规范等问题,最稳妥的方式是创建对应结构的对象,通过序列化工具生成标准JSON:
double time = 60; // 构建匹配目标JSON结构的匿名对象 var userAddTimeObj = new { UserAddTime = new { Minutes = time, TotalPrice = 0.00, IsTaxIncluded = false } }; // 序列化为格式化后的JSON字符串(.NET Core及以上内置JsonSerializer) string jsonStr = System.Text.Json.JsonSerializer.Serialize(userAddTimeObj, new JsonSerializerOptions { WriteIndented = true }); // 构建StringContent var content = new StringContent(jsonStr, Encoding.UTF8, "application/json");
如果项目使用Newtonsoft.Json(需通过NuGet安装),可替换序列化代码为:
string jsonStr = Newtonsoft.Json.JsonConvert.SerializeObject(userAddTimeObj, Newtonsoft.Json.Formatting.Indented);
方法2:修正手动字符串拼接
若坚持手动拼接,需解决两个核心问题:JSON要求键名使用双引号,同时避免数值格式受区域设置影响:
using System.Globalization; double time = 60; var content = new StringContent( @"{ ""UserAddTime"": { ""Minutes"":" + time.ToString(CultureInfo.InvariantCulture) + @", ""TotalPrice"":0.00, ""IsTaxIncluded"":false } }", Encoding.UTF8, "application/json");
- 用转义双引号
""替代原代码中的单引号,符合JSON语法规范 - 调用
ToString(CultureInfo.InvariantCulture)确保double值始终以英文小数点输出,避免区域格式导致的JSON解析错误
内容的提问来源于stack exchange,提问作者SoftSol
相关产品推荐
相关产品推荐

