在 C# 中执行序列化后无法生成 .JSON 文件

问题描述 投票:0回答:2

从下面的代码中,我想使用

Newtonsoft.Json.Linq
序列化生成 JSON 文件。但就我而言,它只是在控制台上运行程序,无法生成
.JSON
文件。

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.MaekringSubjectMarks = 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.StarategySubjectMarks = Convert.ToDouble(Console.ReadLine());
    Console.WriteLine("BRM: ");
    gradeSheet.BRMSubjectMarks = Convert.ToDouble(Console.ReadLine());

    string gradeJson = JsonConvert.SerializeObject(gradeSheet);

    Console.WriteLine(gradeJson);
}

它应该生成

.JSON
文件

c# json .net serialization deserialization
2个回答
0
投票

易卜拉欣已经指出的你的问题很简单,就是你从未调用函数向文件写入任何内容。

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.MaekringSubjectMarks = 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.StarategySubjectMarks = Convert.ToDouble(Console.ReadLine());
    Console.WriteLine("BRM: ");
    gradeSheet.BRMSubjectMarks = Convert.ToDouble(Console.ReadLine());

    string gradeJson = JsonConvert.SerializeObject(gradeSheet, Formatting.Indented);

    Console.WriteLine(gradeJson);
    
    string path = "C:\\YourPath\\FileName.json"
    
    File.WriteAllText(path, gradeJson);
}

-1
投票

我假设你有这样的课程

 class GradeSheet
 {
     public string? StudentName { get; set; } = string.Empty;
     public int StudentRollNo { get; set; }
     public int StudentClass { get; set;}
     public double MaekringSubjectMarks { get; set; }
     public double StatSubjectMarks { get; set; }
     public double MisSubjectMarks { get; set; }
     public double StarategySubjectMarks { get; set; }
     public double BRMSubjectMarks { get; set; }
 }

我添加了“使用 Newtonsoft.Json;”并测试了代码。我的输出是这个json

{"StudentName":"behzad","StudentRollNo":1,"StudentClass":2,"MaekringSubjectMarks":1.0,"StatSubjectMarks":1.0,"MisSubjectMarks":1.0,"StarategySubjectMarks":1.0,"BRMSubjectMarks": 1.0}

这样不行吗?这个json有什么问题吗?

© www.soinside.com 2019 - 2024. All rights reserved.