如何拆分JSON字符串并为JSON属性添加换行?附C#模型示例
解决JSON格式化添加换行和空格的问题
嘿,我来帮你搞定这个JSON格式化的需求!你之前试了转义字符没效果,其实不用手动折腾转义,用Newtonsoft.Json(也就是Json.NET)这个库就能轻松实现你想要的带缩进、换行的格式。
先确认你的C#模型没问题
你的Class1模型定义是正确的,JsonProperty特性也准确映射了JSON属性名,这点不用担心:
class Class1 { [JsonProperty(PropertyName = "flag")] public bool flag { get; set; } [JsonProperty(PropertyName = "flag2")] public bool flag2 { get; set; } [JsonProperty(PropertyName = "SET TRUE USED")] public bool M1 { get; set; } [JsonProperty(PropertyName = "SET FALSE USED")] public bool M2 { get; set; } }
两种场景的解决方案
场景1:从现有TXT文件的紧凑JSON生成格式化版本
如果你已经有了那个紧凑的JSON文件,只需要读取后反序列化再序列化,指定格式化参数就行:
// 读取原文件的紧凑JSON string compactJson = File.ReadAllText(@"你的文件路径.txt"); // 先反序列化成对象,再用Indented格式序列化 string formattedJson = JsonConvert.SerializeObject( JsonConvert.DeserializeObject(compactJson), Formatting.Indented ); // 把格式化后的JSON写回文件(也可以指定新路径) File.WriteAllText(@"格式化后的文件路径.txt", formattedJson);
场景2:从C#对象直接生成格式化的JSON
如果是从你的Class1对象生成JSON,直接序列化时指定Formatting.Indented即可:
// 实例化对象并赋值(根据你的需求设置属性值) Class1 myClassInstance = new Class1 { flag = false, flag2 = false, M1 = false, M2 = false }; // 生成带缩进和换行的JSON string formattedJson = JsonConvert.SerializeObject(myClassInstance, Formatting.Indented); // 写入文件 File.WriteAllText(@"输出文件路径.txt", formattedJson);
最终得到的格式化JSON效果
执行后你会得到符合要求的格式,每个属性单独一行,还有合适的缩进:
{ "flag": false, "flag2": false, "SET TRUE USED": false, "SET FALSE USED": false }
为什么手动转义字符没用?
手动给字符串加\n之类的转义字符容易出现格式错误,尤其是当JSON里有特殊字符或者带空格的属性名时,序列化库会自动处理这些细节,比手动操作可靠多了。
内容的提问来源于stack exchange,提问作者B B
相关产品推荐
相关产品推荐

