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

时间:2019-04-25 19:49:09

标签: c# json json.net

我正在尝试使用C#读取JSON文件,该文件由三个字段组成:“名称”和“ ID”,两个字符串和“位掩码”,它们是从Python以嵌套列表格式写出的

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

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

我是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();
}

1 个答案:

答案 0 :(得分:1)

JToken投射到List<List<float>>将不起作用,因为JToken仅具有用于简单值的显式转换运算符,例如stringint,{{1 }},bool等(有关完整列表,请参见here。)要转换复杂对象,应改用ToObject方法:

double