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

我正在尝试使用 C# 读取一个包含三个字段的 JSON 文件:“名称”和“ID”,两个字符串,以及“位掩码”,它是以嵌套列表格式从 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();
}


慕莱坞森
浏览 159回答 1
1回答

largeQ

将 a强制转换为JTokena 是List<List<float>>行不通的,因为JToken只有针对简单值的显式转换运算符,例如string,&nbsp;int,&nbsp;bool,double等。(完整列表请参见此处。)要转换复杂对象,您应该改用以下ToObject方法:var&nbsp;bitmask&nbsp;=&nbsp;o2["bitmask"].ToObject<List<List<float>>>();
打开App,查看更多内容
随时随地看视频慕课网APP