在C#中如何正确向JSON字符串插入布尔变量
在C#的JSON字符串中正确插入布尔变量的方法
咱们先看看你代码里的问题:你把布尔变量b用双引号包裹起来了,这就导致生成的JSON里"Active"的值是字符串类型的"true",而不是JSON规范里的布尔类型true——这就是它无法正常工作的根源。
下面给你几种靠谱的解决办法,从简单到规范:
1. 修正手动字符串拼接(仅适合简单场景)
如果你坚持用手动拼接的方式,只需要去掉b两边的双引号就行:
var b = true; var f = "{ \"templateName\": \"name\", \"Active\": " + b + "}";
这样生成的JSON会是:{"templateName": "name", "Active": true},Active就是正确的布尔类型了。不过要注意,这种方式只适合结构非常简单的JSON,一旦涉及复杂字段(比如包含特殊字符的字符串、嵌套结构),很容易出问题。
2. 用内置的System.Text.Json序列化(推荐,.NET Core 3.0+支持)
这是最规范的做法,类型安全还不容易出错。你可以先定义一个对应JSON结构的类,然后用序列化工具生成JSON:
首先定义实体类:
public class TemplateInfo { [JsonPropertyName("templateName")] public string TemplateName { get; set; } [JsonPropertyName("Active")] public bool Active { get; set; } }
然后创建实例并序列化:
var b = true; var template = new TemplateInfo { TemplateName = "name", Active = b }; var f = System.Text.Json.JsonSerializer.Serialize(template);
如果不想专门定义类,也可以用匿名对象简化:
var b = true; var f = System.Text.Json.JsonSerializer.Serialize( new { templateName = "name", Active = b } );
3. 用Newtonsoft.Json(Json.NET)序列化(兼容旧.NET框架)
如果你用的是.NET Framework或者习惯用Json.NET,步骤类似,先安装Newtonsoft.Json NuGet包,然后:
var b = true; var f = Newtonsoft.Json.JsonConvert.SerializeObject( new { templateName = "name", Active = b } );
小提醒
尽量避免手动拼接JSON,尤其是复杂结构的情况——序列化工具会自动处理转义字符、类型转换等问题,能帮你避开很多坑。
内容的提问来源于stack exchange,提问作者fazlook1
相关产品推荐
相关产品推荐

