是否可以在文件中保存/存储数组中的对象?
Posted
技术标签:
【中文标题】是否可以在文件中保存/存储数组中的对象?【英文标题】:Is it possible to save/store objects which are in an array in a file? 【发布时间】:2021-04-16 12:03:50 【问题描述】:所以我有这个学校任务,我应该编写一个控制台代码,我可以在其中创建各种产品,只需输入它们。
我已经设法使用对象数组来更轻松地处理产品的创建、编辑和删除。
我想知道是否可以以任何形式存储此对象数组。 如果他们是一个不错的方法,你能给我解释一下吗?
所以在一些帮助下,我现在想出了如何存储它:D。非常感谢! 但现在我的问题是:一切都很好,除了属性“私人双门”没有得到商店。
我的班级:
[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;
【问题讨论】:
***.com/a/22417240/14171304 【参考方案1】:是的。您可以通过多种方式做到这一点,但最流行的方式是序列化该数组并将其写入文件,当您需要从文件中检索该数组时,读取该特定文件并对文件内容进行 DE 序列化并转换内容到数组。最流行的方法之一是使用“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);
注意:JsonConvert 类位于 Newtonsoft.Json 库中。它是免费的,可用于 .NET 和 .NET Core。
【讨论】:
有效!他们是一些小事。但这与您的代码无关:D. 经过一些测试,我发现我的类的一个属性是双精度并没有存储在 json 中。另一个也是双重的。你知道为什么它会跳过第一个双属性吗? 我不知道为什么会这样,但你能给我提供你的类的定义来检查吗? @Liner-SJNF 我发现,它必须与我的替身的私人状态有关,如果我将其更改为公开,它就可以正常工作 我想通了:D。非常感谢您的所有帮助。【参考方案2】:在@Linker-SJNF 的帮助下,我想出了如何序列化和反序列化我的对象数组。他们是这个小问题,我的属性:private double menge
不会序列化...
对此的答案是将[JsonProperty]
放在该属性的声明之上。
现在一切正常!
非常感谢 @Linker-SJNF 和 @dr.null 的帮助! 祝你好运!
【讨论】:
以上是关于是否可以在文件中保存/存储数组中的对象?的主要内容,如果未能解决你的问题,请参考以下文章