如何将JToken转换为嵌套的浮动列表?

问题描述 投票:2回答:1

我正在尝试使用包含三个字段的C#读取JSON文件:“name”和“ID”,两个字符串和“bitmask”,它是以嵌套列表格式从Python写出的

[[0.0, 0.0], [1.0, 1.0], ...].

读取文件和访问字符串字段没有问题,但我无法破解“位掩码”字段。最终,我希望能够将字段放入字典中以便稍后处理到数据库中。

我是C#的新手,所以我的方法有点幼稚。我试图将它作为List<List<float>>投射而没有运气,因为看起来你必须迭代地添加每个子列表。我想在C#中做什么甚至可能?这是我的基本读入代码(取自另一个非常有用的帖子!)。

我可以访问写出JSON的Python代码,所以如果有一个不同的列表格式可以读入,我可以重新处理它们。

using (StreamReader file = File.OpenText(@"C:\Users...\data2.json"))
using (JsonTextReader reader = new JsonTextReader(file))
{
    JObject o2 = (JObject)JToken.ReadFrom(reader);
    string n = (string)o2.SelectToken("name");
    Console.WriteLine("Name field from JSON: {0}", n);
    Console.ReadKey();
}
c# json json.net
1个回答
1
投票

JToken投射到List<List<float>>是行不通的,因为JToken只有stringintbooldouble等简单值的显式转换运算符(请参阅here获取完整列表。)要转换复杂对象,您应该使用ToObject方法代替:

var bitmask = o2["bitmask"].ToObject<List<List<float>>>();
© www.soinside.com 2019 - 2024. All rights reserved.