如何在反序列化字符串到

时间:2017-07-31 15:32:14

标签: c# json json.net

以下是我的课程:

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中删除记录,但我试图避免这个循环,并且想知道在字符串反序列化时有什么方法可以实现这一点上课?

1 个答案:

答案 0 :(得分:2)

如果你有兴趣了解另一种方式,那么是的。您可以继承JsonConvert类,并通过覆盖WriteJsonReadJson方法为序列化和反序列化提供自己的实现。没什么难的,所以我把实施留给你。

示例:http://www.newtonsoft.com/json/help/html/CustomJsonConverter.htm

但是,如果只是过滤特定ID的记录,那么KISS。在反序列化JSON数据后进行过滤。 LINQ有一个单线程解决方案。没有循环,请:)

相关问题