C#使用Newtonsoft.Json序列化后无法生成JSON文件的问题
问题解决:生成JSON文件而非仅控制台输出
你的代码已经完成了对象的JSON序列化并输出到控制台,但缺少将序列化后的JSON字符串写入本地文件的步骤,因此不会生成.json文件。
修改步骤:
- 引入
System.IO命名空间(用于文件系统操作) - 在序列化JSON字符串后,添加文件写入逻辑
修改后的完整代码:
using System; using System.IO; // 新增命名空间 using Newtonsoft.Json; public class GradeSheet { public string StudentName { get; set; } public int StudentRollNo { get; set; } public int StudentClass { get; set; } public double MarketingSubjectMarks { get; set; } // 修正拼写错误:Maekring → Marketing public double StatSubjectMarks { get; set; } public double MisSubjectMarks { get; set; } public double StrategySubjectMarks { get; set; } // 修正拼写错误:Starategy → Strategy public double BRMSubjectMarks { get; set; } } public class Program { public static void Main(string[] args) { GradeSheet gradeSheet = new GradeSheet(); Console.WriteLine("Student Name: "); gradeSheet.StudentName = Console.ReadLine(); Console.WriteLine("Roll Number: "); gradeSheet.StudentRollNo = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Class (present): "); gradeSheet.StudentClass = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("\n\nEnter marks \n"); Console.WriteLine("Marketing: "); gradeSheet.MarketingSubjectMarks = Convert.ToDouble(Console.ReadLine()); // 修正拼写错误 Console.WriteLine("Statistics: "); gradeSheet.StatSubjectMarks = Convert.ToDouble(Console.ReadLine()); Console.WriteLine("MIS: "); gradeSheet.MisSubjectMarks = Convert.ToDouble(Console.ReadLine()); Console.WriteLine("Strategy: "); gradeSheet.StrategySubjectMarks = Convert.ToDouble(Console.ReadLine()); // 修正拼写错误 Console.WriteLine("BRM: "); gradeSheet.BRMSubjectMarks = Convert.ToDouble(Console.ReadLine()); string gradeJson = JsonConvert.SerializeObject(gradeSheet, Formatting.Indented); // 可选:让JSON格式缩进更易读 Console.WriteLine(gradeJson); // 新增:将JSON写入文件 string filePath = "gradesheet.json"; // 文件默认生成在程序运行的当前目录 File.WriteAllText(filePath, gradeJson); Console.WriteLine($"JSON文件已生成:{filePath}"); } }
说明:
File.WriteAllText方法会直接创建或覆盖指定路径的文件,将JSON字符串写入其中- 若要指定绝对路径,可写成类似
@"C:\Documents\gradesheet.json"的形式 - 代码中修正了两处属性名的拼写错误,避免序列化后字段名不符合预期
- 添加
Formatting.Indented参数可以让生成的JSON文件格式缩进,更易阅读(可选)
内容的提问来源于stack exchange,提问作者IshworS
相关产品推荐
相关产品推荐

