Как последовательно преобразовывание объектов C# в файл JSON или XML

Я работаю с системой больницы и мне хотелось бы знать, как он мог бы экспортировать информацию о моих объектах в файлы с читабельным форматом как JSON или XML, чтобы использовать их как ввод другой программы, которая обрабатывает их.

Это мои классы:

public class Patient
{
    public string PatienName { get; set; }
    public int Age { get; set; }
    public char Sex { get; set; }
    public string Address { get; set; }
    public Illness Illness { get; set; }

    public Bed Bed { get; set; }
}

public class Bed
{
    public int BedNumber { get; set; }
    public string Aisle { get; set; }
}

public class Illness
{
    public IllnessType Type { get; set; }
    public string IllnessName { get; set; }
}

public class IllnessType
{
    public string IllnessTypeName { get; set; }
    public string Severity { get; set; }
}
4
задан 12.02.2016, 23:33
5 ответов

AquГ - я помещаю тебе ответ как конвертировать cГіdigo классов с XML.

using System.Xml.Serialization;
using System.IO;

class Program
    {
        static void Main(string[] args)
        {
            Patient NewPatient = new Patient()
            {
                Age = 35,
                Address = "Apple red #159",
                Bed = new Bed()
                {
                    Aisle = "54A",
                     BedNumber = 145,

                },
                Illness = new Illness()
                {
                    IllnessName = "Stomach ache",
                     Type = new IllnessType() 
                     { 
                       IllnessTypeName= "Stomach ache type",
                        Severity = "Chronic",
                     },

                },
                 PatienName = "Marisela Smith",
                  Sex = 'F',

            };

            StreamWriter MyFile = new StreamWriter(@"D:\XML.txt");

            XmlSerializer Serializer = new XmlSerializer(typeof(Patient));
            Serializer.Serialize(MyFile,NewPatient);
        }
    }
1
ответ дан 24.11.2019, 14:53
  • 1
    Я думаю о том, чтобы последовательно преобразовать с JSON, но твоим soluci и # 243; n функционируй. – Erick 11.02.2016, 23:49

Если ты хочешь Xml, пробует использовать System.Xml.Serialization

public static void Guardar(Patient paciente,  String ruta) {
    try
    {

        XmlSerializer serializer = new XmlSerializer(typeof(Patient));

        FileStream fStream = File.Open(ruta , FileMode.Create);

        serializer.Serialize(fStream, paciente);

        fStream.Close();

    }
    catch (Exception e)
    {
    }

}

Или характерный один для всех твоих классов, использованный T (характерные Методы)

public static void Guadar<T>(T data,  String url) {
    try
    {


        XmlSerializer serializer = new XmlSerializer(typeof(T));

        FileStream fStream = File.Open(url , FileMode.Create);

        serializer.Serialize(fStream, data);

        fStream.Close();

    }
    catch (Exception e)
    {
    }

}
2
ответ дан 24.11.2019, 14:53

Если ты используешь JSON.NET (который ты вероятно был бы должен, потому что он очень полезный, и легкий для того, чтобы быть использованным, когда используется JSON), ты мог бы создавать характерные списки Ваших классов и потом последовательно преобразовывать их в файлы JSON; например:

List<Patient> patientList = new List<Patient>();
Patient p = new Patient();
p.PatienName = "Helen Keller";
p.Age = 136;
p.Sex = 'F';
. . .
patientList.Add(p);
. . .
// Entonces, después añadir los pacientes a la lista, los guardas así:    
var jsonPatientList = JsonConvert.SerializeObject(patientList);
System.IO.File.WriteAllText(@"C:\Cualquiera\patients.json", patientList);

Сходным способом ты можешь делать это с оставшейся частью классов.

8
ответ дан 24.11.2019, 14:53

Если хочешь конвертировать ты objeto в xml со следующей функцией он очень легкий и понятный:

public static string GetXMLFromObject(object o) {
   try {
     XmlSerializer serializer = new XmlSerializer(o.GetType());
     StringWriter sw = new StringWriter();
     XmlTextWriter tw = new XmlTextWriter(sw);
     serializer.Serialize(tw, o);
     return sw.ToString();
   } catch (Exception ex) {
     //Handle Exception Code
   } finally {
     sw.close();
     tw.close();
   }
 }

В метод одинокий mandalé ты objeto и тебя возвратит string в формате xml. Только помни что добавь их следующий using в класс, где ты будешь добавлять метод.

using System.Web.Script.Serialization;
using System.Xml.Serialization;

Я надеюсь, что он ты полезный.

Я размещаю тебя соединение, откуда я это достал, там сам ты найдешь как parsear xml в objeto.

0
ответ дан 24.11.2019, 14:53

Добавляя в ответ @B.ClayShannon, здесь способ обращать объекты в XML используя.Net, не frameworks добавочные, но да ты нуждаешься в том, чтобы добавить зависимость в System.XML:

public static string Serialize(object item, bool removeNamespace = true)
{
    if (item == null)
        return null;
    var stringBuilder = new StringBuilder();
    var itemType = item.GetType();
    //remueve "lo.que.sea.el.namespace.de.tu" del nombre completo de la clase: lo.que.sea.el.namespace.de.tu.ClaseConDatos
    if (removeNamespace)
    {
        var xns = new XmlSerializerNamespaces();
        xns.Add(String.Empty, String.Empty);
        new XmlSerializer(itemType).Serialize(new StringWriter(stringBuilder), item, xns);
    }
    else
    {
        new XmlSerializer(itemType).Serialize(new StringWriter(stringBuilder), item);
    }
    return stringBuilder.ToString();
}

Однажды полученный как цепь, ты это можешь сохранять в файл путь

System.IO.File.WriteAllLines(ruta, cadenaXml);

И, если ты нуждаешься deserializarlo:

public static T getObjectOfXml<T>(string xmlInput, Type[] extraTypes)
{
    //Parser xml request to object
    StringReader stream = null;
    XmlTextReader reader = null;
    T returnedXmlClass = default(T);

    try
    {
        // serialise to object
        XmlSerializer serializer = new XmlSerializer(typeof(T), extraTypes);
        stream = new StringReader(xmlInput); // read xml data
        reader = new XmlTextReader(stream);  // create reader
        // covert reader to object
        returnedXmlClass = (T)serializer.Deserialize(reader);
    }
    catch
    {
        returnedXmlClass = default(T);
    }
    finally
    {
        if (stream != null) stream.Close();
        if (reader != null) reader.Close();
    }

    //Return object
    return returnedXmlClass;
}
0
ответ дан 24.11.2019, 14:53

Теги

Похожие вопросы