是否可以在文件中保存/存储数组中的对象?

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 的帮助! 祝你好运!

【讨论】:

以上是关于是否可以在文件中保存/存储数组中的对象?的主要内容,如果未能解决你的问题,请参考以下文章

如何在本地存储中保存对象数组

如何将对象保存到文件中?

03.Lucene中的常用类

在python的文件中保存对象数组

php将数组或对象原样写入或保存到文件有三种方法可以实现

如何保存我从 C 中的文件中读取的数组中的数据