我有以下文字:

id=1
familyName=Rooney
givenName=Wayne
middleNames=Mark
dateOfBirth=1985-10-24
dateOfDeath=
placeOfBirth=Liverpool
height=1.76
twitterId=@WayneRooney


行用“ \ n”分隔,线对用“ =”分隔。

我有一个具有Id,FamilyName,GivenName等属性的Person类。

有什么简单的方法可以将上面的文本反序列化为Person对象,然后使用正确的行和对分隔符将Person对象序列化为上面的文本?

我希望可能会有类似TextSerializer的东西?

基本上,我需要从文件中读取文本,例如然后将person1.txt反序列化为Person对象。

如果可能的话,我想避免为每个属性手动对其进行硬编码。
谢谢,

最佳答案

这也是可能的解决方案。
如果可能,您可以在创建时尝试将文本格式设置为json。
因此,您不需要所有这些处理。只需使用Json.net

public class Person
{
    public int id { set; get; }
    public string familyName { set; get; }
    public string givenName { set; get; }
    public string middleNames { set; get; }
    public string dateOfBirth { set; get; }
    public string dateOfDeath { set; get; }
    public string placeOfBirth { set; get; }
    public double height { set; get; }
    public string twitterId { set; get; }
}

class Program
{
    static void Main(string[] args)
    {
        string line;
        string newText = "{";

        System.IO.StreamReader file =  new System.IO.StreamReader("c:\\test.txt");

        while ((line = file.ReadLine()) != null)
        {
            newText += line.Insert(line.IndexOf("=") + 1, "\"") + "\",";

        }
        file.Close();

        newText = newText.Remove(newText.Length -1);
        newText = newText.Replace("=", ":");
        newText += "}";


        Person Person = JsonConvert.DeserializeObject<Person>(newText);

        Console.ReadLine();
    }
}


希望能有所帮助。

关于c# - 如何将字符串反序列化为类?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13708748/

10-10 07:20