【问题标题】: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;
        }

    }

【问题讨论】:

标签: c# arrays object save store


【解决方案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 的帮助! 祝你好运!

【讨论】:

    猜你喜欢
    • 2016-09-17
    • 2022-07-21
    • 1970-01-01
    • 2020-12-27
    • 2020-08-06
    • 2018-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多