c# - 如何将 JToken 转换为嵌套的 float 列表?

标签 c# json json.net

我正在尝试使用 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();
}

最佳答案

类型转换 JToken List<List<float>>不会工作,因为 JToken只有像 string 这样的简单值的显式转换运算符, int , bool , double等(请参阅 here 以获取完整列表。)要转换复杂对象,您应该使用 ToObject 方法代替:

var bitmask = o2["bitmask"].ToObject<List<List<float>>>();

关于c# - 如何将 JToken 转换为嵌套的 float 列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55856684/

相关文章:

c# - 反序列化.json 到位图图像c#

c# - 如何从 XDocument 获取子节点的值

c# - 将命令绑定(bind)到 DataGrid 中的元素

javascript - JSON (node/express) 和 JSON 数组中的自定义 "types"

java - JSON 响应中的框字符

c# - 将 JSON 对象反序列化为数组

c# - Visual Studio : Can't load 2 versions of Json. NET 和使用别名

c# - 具有自动完成功能的文本框

c# - 应用程序完成后,为什么运行时值出现在设计模式中?

json - 存储传感器数据的数据库(JSON)