Sérialiser une liste d’objects

J’ai un ArrayList qui stocke un object personnalisé. Je veux sérialiser cet ArrayList en une chaîne afin de pouvoir l’enregistrer dans les parameters de l’application.

Cette question cherche à le résoudre, mais est en Java. Et je ne suis pas intelligent avec XML, alors quelqu’un pourrait-il aider? Sérialiser un type d’object ArrayList of Date

J’ai ma configuration ArrayList:

... MyObject tempObj = new MyObject("something",1,"something"); MyCollection.Add(tempObj); ... 

Et j’avais à l’origine ça. Il sort la chaîne, mais l’object n’y est pas:

  private ssortingng SerializeArrayList(ArrayList obj) { System.Xml.XmlDocument doc = new XmlDocument(); Type[] extraTypes = new Type[1]; extraTypes[0] = typeof(MyObject); System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(ArrayList), extraTypes); System.IO.MemoryStream stream = new System.IO.MemoryStream(); try { serializer.Serialize(stream, obj); stream.Position = 0; doc.Load(stream); return doc.InnerXml; } catch { throw; } finally { stream.Close(); stream.Dispose(); } } 

EDIT: demande de code

  public class MyObject { private ssortingng eN; private Boolean bE; private int min; private Boolean bot; private ssortingng onE; public MyObject(ssortingng na, Boolean b) { ... } public MyObject() { } public ssortingng GetSomething() { ... 

    J’ai testé votre code et il semble bien fonctionner tant que vous avez [Serializable] sur votre object.

    De plus, si vous essayez de sérialiser les champs, vous devrez les rendre propriétés publiques.

    Mon test:

      ArrayList array = new ArrayList(); Rules tempObj = new Rules { onE = "Value", min = 45, eN = "Value" }; array.Add(tempObj); ssortingng result = SerializeArrayList(array); private ssortingng SerializeArrayList(ArrayList obj) { XmlDocument doc = new XmlDocument(); XmlSerializer serializer = new XmlSerializer(typeof(ArrayList), new Type[]{typeof(Rules)}); using (MemoryStream stream = new System.IO.MemoryStream()) { try { serializer.Serialize(stream, obj); stream.Position = 0; doc.Load(stream); return doc.InnerXml; } catch (Exception ex) { } } return ssortingng.Empty; } 

    Objet:

     [Serializable] [XmlType(TypeName = "Rules")] public class Rules { // Make fields propertys so they will be serialized public ssortingng eN { get; set; } //Name public Boolean bE { get; set; } //Whether blocked entirely public int min { get; set; } //Minutes they are allowed if blocked public Boolean bot { get; set; } //Create notification if allowance exceed public ssortingng onE { get; set; } //Nothing or CLOSE Process public Rules(ssortingng na, Boolean b) { } public Rules() { } } 

    J’ai rencontré un problème similaire, et il existe un excellent programme appelé SharpSerializer, disponible via Nuget. Il va manipuler votre ArrayList assez facilement, tapez simplement le code:

      SharpSerializer mySerializer = new SharpSerializer(); mySerializer.Serialize(ArrayList, "filetosaveto.xml"); 

    Voici le lien vers le site Web, c’est gratuit, alors ne vous inquiétez pas pour payer quoi que ce soit:

    http://www.sharpserializer.com/en/index.html