我正在尝试在程序的开头加载现有的In [550]: print(doc_vocab - set(vec.vocabulary_.keys()))
{'morning', 'a', 'great morning', 'stackoverflow this', 'is a', 'is', 'oh hello', 'this', 'this is', 'oh', 'a great', 'great'}
文件(如果它们已经存在),并尝试创建它们(如果不存在)。初次使用它时它正在工作,但是现在我将程序划分为多个层,它已停止工作。谁能看到为什么会这样?
.json
ClassOfStudents类如下:
public static void ConvertStudentsToJson()
{
var studentsgrades = ClassOfStudents.Students.Select(x => new { x.StudentName, x.StudentId, x.GradesRecord });
JsonSerializer serializer = new JsonSerializer();
serializer.NullValueHandling = NullValueHandling.Ignore;
using (StreamWriter sw = new StreamWriter(@"C:\Users\source\repos\ConsoleApp1\Grades.Data\bin\Debug\StudentsGrades.JSON"))
{
using (JsonWriter writer = new JsonTextWriter(sw))
{
writer.Formatting = Formatting.Indented;
serializer.Serialize(writer, studentsgrades);
writer.Close();
sw.Close();
}
}
}
public static void LoadJson()
{
//loading students grades
if (File.Exists(@"C:\Users\source\repos\ConsoleApp1\Grades.Data\bin\Debug\StudentsGrades.JSON"))
{
using (StreamReader r = new StreamReader(@"C:\Users\source\repos\ConsoleApp1\Grades.Data\bin\Debug\StudentsGrades.JSON"))
{
string json = r.ReadToEnd();
ClassOfStudents.Students = JsonConvert.DeserializeObject<List<Student>>(json);
r.Close();
}
}
else
{
File.Create(@"C:\Users\source\repos\ConsoleApp1\Grades.Data\bin\Debug\StudentsGrades.JSON");
}
}
主题类如下:
public class ClassOfStudents
{
public List<Student> Students = new List<Student>();
public List<Subject> Subjects = new List<Subject>();
public void AddSubject(Subject subjectName)
{
Subjects.Add(subjectName);
}
public void AddStudent(Student studentName)
{
Students.Add(studentName);
}
}
在program.cs中,我初始化了以下学生类:
public class Subject
{
public string SubjectName { get; set; }
public Guid SubjectId { get; set; }
public int MaxMarkAvail;
}
当我想查看我的主题时,此方法称为:
public static ClassOfStudents ClassOfStudents = new ClassOfStudents();
谢谢
答案 0 :(得分:1)
虽然没有什么可以告诉您所提供的信息,但是这里有用的是您可以进行故障排除以找出答案。更重要的是,对代码进行故障排除是一项需要花费时间才能开发的技能/技巧,因此这对您来说是一个绝佳的机会。
由于您不确定错误在哪里,因此我将其分为几个练习。
测试您的加载方法-确保在该路径中存储了一个有效的JSON文件(从其工作之时开始),在您的加载方法上设置一个断点,然后逐步进行操作。完成后,您将知道文件是否加载失败(一个故障点,例如UAC不允许您访问),如果可以,则原始json的外观是否符合您的期望(在VS IDE中,您可以将鼠标悬停还是可以使用立即窗口。如果可以,您的反序列化方法是否返回预期的对象结构?
测试您的保存方法。添加一个断点,调用保存实际结果,知道预期结果。然后,当您单步执行代码时,可以找到失败的语句,并集中精力进行故障排除。
不可以,添加一些try / catch语句(我不知道您现在有什么样的错误处理),这些语句将(至少)捕获错误并将其写入控制台。这样,如果将来在这里遇到错误,就会知道在哪里寻找。