如何在LINQ查询中值得json对象



我正在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);
        }

相关内容

  • 没有找到相关文章

最新更新