以下是我的课程:
public class Categories
{
public List<Categories> Subcategories { get; set; }
public List<Locations> Locations { get; set; }
}
public class Locations
{
public List<Coordinates> Coordinates { get; set; }
}
public class Coordinates
{
public int Id { get; set; }
public int X { get; set; }
public int Y { get; set; }
}
现在坐标包含如下记录:
[0] : Id:0
X:0
Y:0
[1] : Id:1
X:100
Y:200
[2] : Id:2
X:300
Y:400
我正在接收1个json字符串,我将其反序列化如下:
var data = JsonConvert.DeserializeObject<List<Categories>>(json);
现在我想要做的是我想忽略Id值为0的坐标记录,同时在类别列表中反序列化json。
我知道我可以循环访问这些数据,然后从Id == 0
中的Coordinates中删除记录,但我试图避免这个循环,并且想知道在字符串反序列化时有什么方法可以实现这一点上课?
答案 0 :(得分:2)
如果你有兴趣了解另一种方式,那么是的。您可以继承JsonConvert
类,并通过覆盖WriteJson
和ReadJson
方法为序列化和反序列化提供自己的实现。没什么难的,所以我把实施留给你。
示例:http://www.newtonsoft.com/json/help/html/CustomJsonConverter.htm
但是,如果只是过滤特定ID的记录,那么KISS。在反序列化JSON数据后进行过滤。 LINQ有一个单线程解决方案。没有循环,请:)