C# 在C中从filestream反序列化多个对象#
我无法从文件流反序列化多个JSON对象;我得到一个序列化异常 我可以用一个对象,但不能用多个对象。 我正在从.txt文件中尝试此操作: JSON: C#代码:C# 在C中从filestream反序列化多个对象#,c#,.net,json,json.net,C#,.net,Json,Json.net,我无法从文件流反序列化多个JSON对象;我得到一个序列化异常 我可以用一个对象,但不能用多个对象。 我正在从.txt文件中尝试此操作: JSON: C#代码: 公共类程序 { 私有静态列表团队成员=新列表(); 私有静态列表teamMembersDeserialized=新列表(); 公共静态void Main(字符串[]args) { 字符串teamFile=@“C:\Users\Precision\Downloads\Serializacio\csharks.txt”; 字符串teamFil
公共类程序
{
私有静态列表团队成员=新列表();
私有静态列表teamMembersDeserialized=新列表();
公共静态void Main(字符串[]args)
{
字符串teamFile=@“C:\Users\Precision\Downloads\Serializacio\csharks.txt”;
字符串teamFileJson=@“C:\Users\Precision\Downloads\Serializacio\csharksJSON.json”;
字符串teamFileJson2=@“C:\Users\Precision\Downloads\Serializacio\csharksJSON2.json”;
使用(FileStream fs=newfilestream(teamFile,FileMode.Open,FileAccess.Read))
{
使用(StreamReader=新StreamReader(fs))
{
列表成员数据=新列表();
while(true)
{
字符串行=reader.ReadLine();
如果(行==null)
{
打破
}
memberData=line.Split(“”).ToList();
TeamMember=newTeamMember(memberData[0],memberData[1],int.Parse(memberData[2]);
团队成员。添加(成员);
}
}
}
使用(FileStream fs=newfilestream(teamFileJson、FileMode.OpenOrCreate、FileAccess.Write))
{
foreach(团队成员中的团队成员)
{
Console.WriteLine(member.ToString());
DataContractJsonSerializer jsonSerializer=新的DataContractJsonSerializer(member.GetType());
jsonSerializer.WriteObject(fs,成员);
}
}
使用(FileStream fs2=File.OpenRead(teamFileJson2))
{
foreach(团队成员中的团队成员)
{
DataContractJsonSerializer jsonSerializer=新的DataContractJsonSerializer(member.GetType());
{
TeamMember memberNew=jsonSerializer.ReadObject(fs2)作为TeamMember;
teamMembersDeserialized.Add(memberNew);
}
}
}
foreach(teamMembersDeserialized中的TeamMember成员)
{
Console.WriteLine(member.ToString());
}
Console.ReadKey();
}
}
以下示例解析JSON。我正在使用Newtonsoft.Json名称。如果你需要任何额外的帮助,请告诉我
void Main()
{
var json = @"[
{
'Name': 'imi',
'TeamName': 'csharks'
},
{
'Name': 'romeo',
'TeamName': 'csharks'
},
{
'Name': 'peti',
'TeamName': 'csharks'
},
{
'Name': 'berti',
'TeamName': 'csharks'
},
{
'Name': 'bala',
'TeamName': 'csharks'
}]";
var teams = JsonConvert.DeserializeObject<List<Team>>(json);
teams.ForEach(x => Console.WriteLine($"Name: {x.Name}, Team: {x.TeamName}"));
}
public class Team
{
public String Name { get; set; }
public String TeamName { get; set; }
}
要从文件中读取此JSON,可以执行以下操作:
var filename = Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.Desktop),
"test.json");
var json = File.ReadAllText(filename);
下面的示例解析JSON。我正在使用Newtonsoft.Json名称。如果你需要任何额外的帮助,请告诉我
void Main()
{
var json = @"[
{
'Name': 'imi',
'TeamName': 'csharks'
},
{
'Name': 'romeo',
'TeamName': 'csharks'
},
{
'Name': 'peti',
'TeamName': 'csharks'
},
{
'Name': 'berti',
'TeamName': 'csharks'
},
{
'Name': 'bala',
'TeamName': 'csharks'
}]";
var teams = JsonConvert.DeserializeObject<List<Team>>(json);
teams.ForEach(x => Console.WriteLine($"Name: {x.Name}, Team: {x.TeamName}"));
}
public class Team
{
public String Name { get; set; }
public String TeamName { get; set; }
}
要从文件中读取此JSON,可以执行以下操作:
var filename = Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.Desktop),
"test.json");
var json = File.ReadAllText(filename);
我很困惑文件不是json?团队成员来自哪里?看起来不像是有效的json?抱歉!更新!这是否有效(json是从“[”到“]”的整个文件):var my_array=JsonConvert.DeserializeObject(json)?(参考)我已经成功了!伙计们!DataContractJsonSerializer jsonSerializer=新的DataContractJsonSerializer(类型(列表));readMembers=jsonSerializer.ReadObject(fs2)作为列表;我很困惑文件不是json?团队成员来自哪里?看起来不像是有效的json?抱歉!更新!这是否有效(json是从“[”到“]”的整个文件):var my_array=JsonConvert.DeserializeObject(json)?(参考)我已经成功了!伙计们!DataContractJsonSerializer jsonSerializer=新的DataContractJsonSerializer(类型(列表));readMembers=jsonSerializer.ReadObject(fs2)作为列表;
Name: imi, Team: csharks
Name: romeo, Team: csharks
Name: peti, Team: csharks
Name: berti, Team: csharks
Name: bala, Team: csharks
var filename = Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.Desktop),
"test.json");
var json = File.ReadAllText(filename);