You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#使用Newtonsoft.Json序列化后无法生成JSON文件的问题

问题解决:生成JSON文件而非仅控制台输出

你的代码已经完成了对象的JSON序列化并输出到控制台,但缺少将序列化后的JSON字符串写入本地文件的步骤,因此不会生成.json文件。

修改步骤:

  1. 引入System.IO命名空间(用于文件系统操作)
  2. 在序列化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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 19:59:59