我有一个
json
文件,其格式如下:
{"0":{"Height":190,"Left":1640,"Top":170,"Width":600},"1":{"Height":52,"Left":2250,"Top":306,"Width":112},"10":{"Height":38,"Left":2011,"Top":794,"Width":378},"100":{"Height":45,"Left":192,"Top":3318,"Width":131},"101":{"Height":42,"Left":1211,"Top":3367,"Width":1216}}
此
json
文件中的特殊情况:
"1"
、"2"
、"3"
...,尤其是不像 json 列表那样正确命名。我有一个类
Geometry
,如下所示:
public class Geometry
{
public int Height { get; set; }
public int Width { get; set; }
public int Left { get; set; }
public int Top { get; set; }
}
是否可以通过忽略“枚举”
json
、"1"
、"2"
等来解析"3"
文件,并只考虑每个此类节点的内容(转换为类Geometry
) )?
作为输出,我想要一个对象 List<Geometry>
。
我怎样才能实现这个目标?
JSON 所代表的实际上是一个
Dictionary<string, Geometry>
- 或者,如果您对解析键感到满意,则可以是一个 Dictionary<int, Geometry>
。我建议将其解析为as,然后根据结果构建一个列表。如果您根本不关心密钥或顺序,我只需使用:
var list = JsonConvert.DeserializeObject<Dictionary<string, Geometry>>()
.Values
.ToList();
如果你想使用按键的value来排序,你可以这样写:
var list = JsonConvert.DeserializeObject<Dictionary<int, Geometry>>()
.OrderBy(pair => pair.Key)
.Values
.ToList();