我正在linq中的txt文件中获取JSON数据,并对此操作执行一些操作以使过程快速。但是,当我试图调用该查询时,它向我展示了JSON对象的避免序列化的错误。那么如何对其进行测试?
我得到错误喜欢
无法对当前的JSON对象(例如{"名称":" value"})进行挑选 进入类型的'system.collections.generic.list1 [mmf.liveamdata]'因为 该类型需要一个JSON阵列(例如[1,2,3])才能进行挑选 正确。
我搜索解决此问题,但是几乎所有答案都没有LINQ执行不审理。由于时间延迟,我需要使用LINQ。
以下是我正在调用的方法
public static void something()
{
File.ReadLines(filePath)
.AsParallel()
.Select(x => x.TrimStart('[').TrimEnd(']'))
.Select(JsonConvert.DeserializeObject<List<LiveAMData>>)
.ForAll(WriteRecord);
}
及以下是我正在使用
的类对象public class LiveAMData
{
public string ev { get; set; }
public string sym { get; set; }
}
您正在尝试对JSON数组进行挑选,但是您正在修剪[
和]
零件,以使其不再是JSON数组。删除修剪线:
public static void something()
{
File.ReadLines(filePath)
.AsParallel()
.Select(JsonConvert.DeserializeObject<List<LiveAMData>>)
.ForAll(WriteRecord);
}
如果您的文件的每一行都是JSON数组,则如此:
[{"ev":"Test1", "sym": "test"},{"ev":"Test2", "sym": "test"}]
您的修剪线将将其更改为无效的JSON:
{"ev":"Test1", "sym": "test"},{"ev":"Test2", "sym": "test"}
当然不能将其列为List<LiveAMData>>
当您单独化每个对象时,您不需要List
类型 DeserializeObject
调用。尝试以下操作:
public static void something()
{
File.ReadLines(filePath)
.AsParallel()
.Select(x => x.TrimStart('[').TrimEnd(']'))
.Select(JsonConvert.DeserializeObject<LiveAMData>)
.ForAll(WriteRecord);
}