反序列化复杂的Json对象

我想反序列化一个复杂的,并且说构造不好的json。我编写的代码不会反序列化对象,该MovieInfo属性为null。您可以在代码中找到示例json。我想避免使用JObject.Parsedynamic对象。我在这里想念什么?

using System.Collections.Generic;
using Newtonsoft.Json;

namespace ComplexJsonExample
{
    class Program
    {
        static void Main(string[] args)
        {
            string jsonInText = @"
            {
                ""movies"" : [
                    { 
                        ""Harry Potter"" : [
                            { ""rating"": ""great""}, 
                            { ""rating"": ""horrible""}
                        ]
                    },
                    { 
                        ""Guardians of the galaxy"" : [
                            { ""rating"": ""cool""}, 
                            { ""rating"": ""awesome""}
                        ]
                    }
                ]
            }
            ";

            var movieList = JsonConvert.DeserializeObject<MovieList>(jsonInText);
        }
    }

    public class MovieList
    {
        [JsonProperty("movies")]
        public IList<Movie> Movies { get; set; }
    }

    public class Movie
    {
        IDictionary<string, IList<MovieRating>> MovieInfo { get; set; }
    }

    public class MovieRating
    {
        [JsonProperty("rating")]
        public string Rating { get; set; }
    }
}
托马斯·列夫斯克

这有点丑陋,但是您可以这样做:

class MovieList
{
    [JsonProperty("movies")]
    public Movie[] Movies { get; set; }
}

class Movie : Dictionary<string, MovieRating[]>
{
}

class MovieRating
{
    [JsonProperty("rating")]
    public string Rating { get; set; }
}

奇怪的是,电影是只有一个键(其标题)的字典,但是它与JSON结构匹配。反序列化后,您始终可以将其映射到更明智的方式。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章