正如您在更新中正确诊断出的那样,问题在于JSON先关闭,
]然后再打开
[以开始下一个集合。这种格式使JSON整体上无效,这就是Json.NET引发错误的原因。
幸运的是,这个问题似乎经常出现,以至于Json.NET实际上具有处理它的特殊设置。如果
JsonTextReader直接使用a
来读取JSON,则可以将
SupportMultipleContent标志设置为
true,然后使用循环分别反序列化每个项目。
这应该使您能够以内存有效的方式成功处理非标准JSON,而不管存在多少个数组或每个数组中有多少个项目。
using (WebClient client = new WebClient()) using (Stream stream = client.OpenRead(stringUrl)) using (StreamReader streamReader = new StreamReader(stream)) using (JsonTextReader reader = new JsonTextReader(streamReader)) { reader.SupportMultipleContent = true; var serializer = new JsonSerializer(); while (reader.Read()) { if (reader.TokenType == JsonToken.StartObject) { Contact c = serializer.Deserialize<Contact>(reader); Console.WriteLine(c.FirstName + " " + c.LastName); } } }
完整的演示在这里:https :
//dotnetfiddle.net/2TQa8p
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)