Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何在JSON字符串反序列化期间忽略数组项_.net_Json_Json.net - Fatal编程技术网

.net 如何在JSON字符串反序列化期间忽略数组项

.net 如何在JSON字符串反序列化期间忽略数组项,.net,json,json.net,.net,Json,Json.net,看起来很简单,但我就是不知道怎么做。我使用外部api获取JSON结果(使用Newtonsoft.JSON),问题是设计不好,导致我的数组类型混合如下: {"data":["Monday 13 january", {"id":"1234aa","name":"teamA"},{"id":"1234bb","name":"teamB"}, "Tuesday 14 january", {"id":"1234aa","name":"teamA"}]} public class RootObject {

看起来很简单,但我就是不知道怎么做。我使用外部api获取JSON结果(使用Newtonsoft.JSON),问题是设计不好,导致我的数组类型混合如下:

{"data":["Monday 13 january", {"id":"1234aa","name":"teamA"},{"id":"1234bb","name":"teamB"}, "Tuesday 14 january", {"id":"1234aa","name":"teamA"}]}
public class RootObject
{
    [JsonProperty("data")]
    [JsonConverter(typeof(TeamListConverter))]
    public List<Team> Teams { get; set; }
}

public class Team
{
    [JsonProperty("id")]
    public string Id { get; set; }
    [JsonProperty("name")]
    public string Name { get; set; }
}
这将产生如下对象:

public class RootObject
{
  public List<object> data { get; set; }
}
公共类根对象
{
公共列表数据{get;set;}
}
我希望忽略这些日期字符串,并将对象反序列化为类型化数组

public class RootObject
{
   public List<Team> data { get; set; }
}
公共类根对象
{
公共列表数据{get;set;}
}
你知道如何实现这种行为吗

更新:
也许我不清楚,但我不是在寻找一个在反序列化之后进行soms转换的解决方案。我想要一些集成的解决方案,例如使用JsonConverter。

当序列化对象时,如果愿意,可以配置忽略哪个属性。如果您这样做了,那么您必须迭代列表
列表数据
,找到
团队
对象并将它们放在单独的列表中。

这可以通过自定义
JsonConverter
实现

假设您的类设置如下:

{"data":["Monday 13 january", {"id":"1234aa","name":"teamA"},{"id":"1234bb","name":"teamB"}, "Tuesday 14 january", {"id":"1234aa","name":"teamA"}]}
public class RootObject
{
    [JsonProperty("data")]
    [JsonConverter(typeof(TeamListConverter))]
    public List<Team> Teams { get; set; }
}

public class Team
{
    [JsonProperty("id")]
    public string Id { get; set; }
    [JsonProperty("name")]
    public string Name { get; set; }
}
以下是演示程序:

public class Program
{
    public static void Main(string[] args)
    {
        string json = @"
        {
            ""data"":
            [
                ""Monday 13 january"",
                {
                    ""id"":""1234aa"",
                    ""name"":""teamA""
                },
                {
                    ""id"":""1234bb"",
                    ""name"":""teamB""
                }, 
                ""Tuesday 14 january"", 
                {
                    ""id"":""1234aa"",
                    ""name"":""teamA""
                }
            ]
        }";

        RootObject obj = JsonConvert.DeserializeObject<RootObject>(json);

        foreach (Team t in obj.Teams)
        {
            Console.WriteLine(t.Id + " - " + t.Name);
        }
    }
}

这就是您要找的吗?

我不明白,我的问题不是关于属性,而是关于忽略数组项。请添加一些示例代码,看看您的解决方案是否有帮助。这正是我想要的,谢谢!昨天晚上我就想出来了,但我用了两个转换器。你的看起来更好更干净。我今晚给它一个机会,如果它有效的话,我会做标记。谢谢