使用List <string>的JSON序列化和反序列化不起作用

时间:2019-11-14 13:54:10

标签: c# ios xamarin xamarin.ios jsonconvert

我的开发遇到以下问题:

我想序列化并将字符串列表(System.List)保存在我的iPhone上。该列表包含正在运行的应用程序发生的错误消息。 然后,我想将其加载回并反序列化以将列表保存在我的应用程序中。以下代码会发生这种情况(代码缩短,多余部分被截断):

List<string> MyList = {"Message One", "Message two"};

//Serialize 
string Temp = Newtonsoft.Json.Jsonconvert.SerializeObject(MyList);

//Save Data
using (Streamwriter sw = File.AppendText(Path))
{
     sw.WriteLine(Temp);
}

//Load Data
MyList = Newtonsoft.Json.Jsonconvert.Deserialize<List<string>>(File.ReadAllText(Path));

然后我得到了例外 "Error converting value "one" to type 'System.Collections.Generic.List`1[System.String]'."

iOS系统上的输出在.txt文件中:

["One","Two"]

出什么问题了?

1 个答案:

答案 0 :(得分:-1)

问题已解决:File.AppendText(“ C:\ temp \ t.txt”)

它将在每次运行时添加新行。 1次运行后。您无法转换所有文件内容。

            List<string> MyList = new List<string>{ "One", "two" };

            //Serialize 
            string Temp = JsonConvert.SerializeObject(MyList);

//Do this.
            File.WriteAllText("C:\\temp\\t.txt",Temp);

            //Comment this.
            //using (StreamWriter sw = File.AppendText("C:\\temp\\t.txt"))
            //{
            //    sw.WriteLine(Temp);
            //}

            //Load Data
            MyList = JsonConvert.DeserializeObject<List<string>>(File.ReadAllText("C:\\temp\\t.txt"));