使用LINQ将JSON解析为对象列表

保罗

我对解析以下JSON结构的最佳方法有些困惑。

{
"featured": {
    "id": 15,
    "title": "media 1 -> 7",
    "description": "test1",
    "short_description": "test1",
    "rating_avg": 0.0,
    "image": "//d25xdrj7gd7wz1.cloudfront.net/covers/1603/1452024324.jpg"
},
"categories": [
    {
        "id": 1,
        "title": "category 0",
        "description": null,
        "position": 0,
        "media": [
            {
                "id": 1,
                "title": "media 0 -> 0",
                "description": "test1",
                "short_description": "test1",
                "rating_avg": 0.0,
                "image": "//d25xdrj7gd7wz1.cloudfront.net/covers/1603/1452024324.jpg",
                "category_media": {
                    "position": 0,
                    "category_id": 1,
                    "media_id": 1,
                    "id": 1
                }
            }, ...

基本上,我有一个类别数组,其中包含一系列媒体(该功能适用​​于其他内容)

我正在寻找返回列表,并且类别对象包含一个列表

我创建了一些模型:

public class Category
{
    public string Id { get; set; }
    public string Title { get; set; }
    public string Description { get; set; }

    public List<Media> MediaList { get; set; }
}

public class Media
{
    public string Id { get; set; }
    public string Title { get; set; }
    public string Description { get; set; }
    public string ShortDescription { get; set; }
    public string Image { get; set; }
}

..我应该使用Newtonsoft?

我看了下面的示例:反序列化部分JSON片段,但我认为我不需要从JToken-> Category ...等进行转换。换句话说,我认为仅返回我的List会很容易。

我是LINQ的新手(我来自python背景),所以我逐渐了解C#

甲苯胺

使用它作为模型

using System;
    using System.Collections.Generic;

    using System.Globalization;
    using Newtonsoft.Json;
    using Newtonsoft.Json.Converters;

    public partial class JsonModel
    {
        [JsonProperty("featured")]
        public Featured Featured { get; set; }

        [JsonProperty("categories")]
        public List<Category> Categories { get; set; }
    }

    public partial class Category
    {
        [JsonProperty("id")]
        public long Id { get; set; }

        [JsonProperty("title")]
        public string Title { get; set; }

        [JsonProperty("description")]
        public object Description { get; set; }

        [JsonProperty("position")]
        public long Position { get; set; }

        [JsonProperty("media")]
        public List<Featured> Media { get; set; }
    }

    public partial class Featured
    {
        [JsonProperty("id")]
        public long Id { get; set; }

        [JsonProperty("title")]
        public string Title { get; set; }

        [JsonProperty("description")]
        public string Description { get; set; }

        [JsonProperty("short_description")]
        public string ShortDescription { get; set; }

        [JsonProperty("rating_avg")]
        public long RatingAvg { get; set; }

        [JsonProperty("image")]
        public string Image { get; set; }

        [JsonProperty("category_media", NullValueHandling = NullValueHandling.Ignore)]
        public CategoryMedia CategoryMedia { get; set; }
    }

    public partial class CategoryMedia
    {
        [JsonProperty("position")]
        public long Position { get; set; }

        [JsonProperty("category_id")]
        public long CategoryId { get; set; }

        [JsonProperty("media_id")]
        public long MediaId { get; set; }

        [JsonProperty("id")]
        public long Id { get; set; }
    }
}

然后在您的课程中执行以下操作:

var info = JsonConvert.DeserializeObject<JsonModel>(json);
var featured = info.Featured;
var categories = info.Categories;

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章