我无法将包含多个Account
类型对象的JSON文件序列化。下面是我如何构建data.json
文件。我有一个帐户列表List<Account>
,它像往常一样序列化。我通过添加新行来分隔json文件中的每个对象。
List<Account> listOfAccounts = new List<Account>();
if (listOfAccounts != null)
{
foreach (var item in listOfAccounts)
{
JavaScriptSerializer ser = new JavaScriptSerializer();
string outputJSON = ser.Serialize(item);
// I added Environment.NewLine to separate each account in json file.
File.AppendAllText("data.json", outputJSON + Environment.NewLine);
}
}
字符串
现在,当我试图从JSON文件中检索所有帐户到List<Account>
时,我得到一个错误:System.ArgumentException: 'Invalid JSON primitive:
请帮助找到解决方案,这样我就可以从JSON文件中获取所有对象。
private void JsonFileLoad()
{
if(File.Exists("data.json"))
{
String JSONtxt = File.ReadAllText("data.json");
JavaScriptSerializer ser = new JavaScriptSerializer();
// Not sure how to deserialize all lines into List<account>
List<Account> desirializedAccounts = ser.Deserialize<List<Account>>(JSONtxt);
}
}
型
我真的很感激你能提供的任何帮助。
2条答案
按热度按时间dba5bblo1#
首先,你应该以标准的json格式序列化。你所做的是序列化对象并写入文件。它应该是,将列表完全序列化为json格式。但假设你可能有特定的原因,我已经给出了许多可能的解决方案在不同的情况下。
注意:我使用Newtonsoft.json,因为它很快,我发现它很容易。http://www.newtonsoft.com/json
https://www.nuget.org/packages/newtonsoft.json/的
解决方法:
字符串
方案一:推荐
型
方案二:根据您的要求
型
icomxhvb2#
您正在序列化Account而不是List of Account,这就是为什么序列化失败的原因。您需要在新行中分隔这些帐户吗?如果是这样,您可以尝试在data.json中的第一个和最后一个char ']'中添加char '['。