C# 是否可以将数组中的对象保存/存储到文件中?
所以我有一个学校的任务,我可以写一个控制台代码,在其中我可以创建各种产品,只需输入它们 我已经设法使用一个对象数组,使其更容易处理产品的创建、编辑和删除 我想知道是否可以以任何形式存储此对象数组。 当他们的方法很好的时候,你能给我解释一下吗 所以,在一些帮助下,我现在知道了如何储存它:D。非常感谢! 但现在我的问题是:除了“private double menge”属性没有得到存储之外,一切都正常 我的班级:C# 是否可以将数组中的对象保存/存储到文件中?,c#,arrays,object,save,store,C#,Arrays,Object,Save,Store,所以我有一个学校的任务,我可以写一个控制台代码,在其中我可以创建各种产品,只需输入它们 我已经设法使用一个对象数组,使其更容易处理产品的创建、编辑和删除 我想知道是否可以以任何形式存储此对象数组。 当他们的方法很好的时候,你能给我解释一下吗 所以,在一些帮助下,我现在知道了如何储存它:D。非常感谢! 但现在我的问题是:除了“private double menge”属性没有得到存储之外,一切都正常 我的班级: [Serializable] class Artikel {
[Serializable]
class Artikel
{
public string artikelnummer;
public string artikelbezeichnung;
private double Menge;
public string Mengeneinheit;
public double Preis;
public void MengeAktualisieren(double abZuBuchung)
{
if (abZuBuchung < -1000 || abZuBuchung > 1000)
{
Console.WriteLine("Eingabe darf den Wert 1000 nicht ueberschreiten und den Wert -1000 nicht unterschreiten!\n");
}
else
{
Menge += abZuBuchung;
Console.WriteLine("\n\nMenge wurde zu: " + MengeAnzeigen() + " geändert!\n");
}
}
public string MengeAnzeigen()
{
return (Menge.ToString());
}
[JsonConstructor]
public Artikel(string anlegen_artikelnummer, string anlegen_artikelbezeichnung, double anlegen_Menge, string anlegen_Mengeneinheit, double anlegen_Preis)
{
artikelnummer = anlegen_artikelnummer;
artikelbezeichnung = anlegen_artikelbezeichnung;
Menge = anlegen_Menge;
Mengeneinheit = anlegen_Mengeneinheit;
Preis = anlegen_Preis;
}
}
[可序列化]
Artikel类
{
公共弦艺人;
公共字符串Artikelbezeichung;
私人双梦阁;
公共字符串Mengeneinheit;
公共双重优惠;
公共无效Mengeaktualieseren(双abZuBuchung)
{
如果(abZuBuchung<-1000 | | abZuBuchung>1000)
{
Console.WriteLine(“Eingabe darf den Wert 1000 nicht ueberschreiten and den Wert-1000 nicht unterschreiten!\n”);
}
其他的
{
孟格+=阿祖不冲;
Console.WriteLine(“\n\nMenge wurde zu:“+MengeAnzegen()+”geändert!\n”);
}
}
公共字符串mengeAnzegen()
{
return(Menge.ToString());
}
[JsonConstructor]
公共艺术品(字符串编号、字符串编号、双字符编号、字符串编号、双字符编号)
{
ArtikerNummer=anlegen_ArtikerNummer;
Artikelbezeichung=anlegen_Artikelbezeichung;
孟格=安乐根_孟格;
Mengeninheit=anlegen_Mengeninheit;
Preis=anlegen_Preis;
}
}
是。您可以通过多种方式来实现这一点,但最流行的方式是序列化该数组并将其写入文件,然后在需要从文件中检索该数组时,读取该文件并反序列化该文件内容并将该内容转换为数组。最流行的方法之一是使用“Newtonsoft.Json”库。下面是我的代码。请尝试一下,让我知道它是否有效
private void ArrayToJSONString(MyClass[] items,string outpath)
{
string jsonData = JsonConvert.SerializeObject(items);
var myFile = File.Create(outpath);
myFile.Close();
File.WriteAllText(@"" + outpath, jsonData);
}
private void JSONStringToArray(string filepath)
{
string jsonData = File.ReadAllText(filepath);
MyClass[] items = JsonConvert.DeserializeObject<MyClass[]>(jsondata);
}
private void ArrayToJSONString(MyClass[]项,字符串输出路径)
{
字符串jsonData=JsonConvert.SerializeObject(项);
var myFile=File.Create(输出路径);
myFile.Close();
writealText(@“+outpath,jsonData);
}
私有void JSONStringToArray(字符串文件路径)
{
字符串jsonData=File.ReadAllText(文件路径);
MyClass[]items=JsonConvert.DeserializeObject(jsondata);
}
注意:JsonConvert类位于Newtonsoft.Json库中。它是免费的,可用于.NET和.NET Core。是。您可以通过多种方式来实现这一点,但最流行的方式是序列化该数组并将其写入文件,然后在需要从文件中检索该数组时,读取该文件并反序列化该文件内容并将该内容转换为数组。最流行的方法之一是使用“Newtonsoft.Json”库。下面是我的代码。请尝试一下,让我知道它是否有效
private void ArrayToJSONString(MyClass[] items,string outpath)
{
string jsonData = JsonConvert.SerializeObject(items);
var myFile = File.Create(outpath);
myFile.Close();
File.WriteAllText(@"" + outpath, jsonData);
}
private void JSONStringToArray(string filepath)
{
string jsonData = File.ReadAllText(filepath);
MyClass[] items = JsonConvert.DeserializeObject<MyClass[]>(jsondata);
}
private void ArrayToJSONString(MyClass[]项,字符串输出路径)
{
字符串jsonData=JsonConvert.SerializeObject(项);
var myFile=File.Create(输出路径);
myFile.Close();
writealText(@“+outpath,jsonData);
}
私有void JSONStringToArray(字符串文件路径)
{
字符串jsonData=File.ReadAllText(文件路径);
MyClass[]items=JsonConvert.DeserializeObject(jsondata);
}
注意:JsonConvert类位于Newtonsoft.Json库中。它是免费的,可用于.NET和.NET Core。在@Linker SJNF的帮助下,我找到了如何序列化和反序列化我的对象数组。他们的问题是我的属性:
private double menge
无法序列化
答案是将[JsonProperty]
放在该属性声明的上方。
现在一切都很好
非常感谢@Linker SJNF和@dr.null对您的帮助!
祝你好运 在@Linker SJNF的帮助下,我想出了如何序列化和反序列化我的对象数组。他们的问题是我的属性:
private double menge
无法序列化
答案是将[JsonProperty]
放在该属性声明的上方。
现在一切都很好
非常感谢@Linker SJNF和@dr.null对您的帮助!
祝你好运 它起作用了!它们是一些小东西。但这与您的代码无关:D。经过一些测试,我发现我的类的一个属性double没有存储在json中。另一个是双倍的,也是双倍的。你知道为什么它会跳过第一个双属性吗?我不知道为什么会发生这种情况,但是你能提供给我你要检查的类的定义吗?当然。我编辑我原来的帖子!好的,你可以这样做:)它工作!它们是一些小东西。但这与您的代码无关:D。经过一些测试,我发现我的类的一个属性double没有存储在json中。另一个是双倍的,也是双倍的。你知道为什么它会跳过第一个双属性吗?我不知道为什么会发生这种情况,但是你能提供给我你要检查的类的定义吗?当然。我编辑我原来的帖子!好的,你可以这样做:)