首页 > 解决方案 > 具有字符串列表的 JSON DeserializeObject

问题描述

[
  {
        "Title": "TOY STORY 4",
        "Genre": "COMEDY",
        "Actors": [
            "Tom Hanks",
            "Tim Allen",
            "Annie Potts"
        ],
        "Id": 1
    },
    {
        "Title": "The Matrix",
        "Genre": "Action",
        "Actors": [
            "Keanu Reeves",
            "Laurence Fishburne",
            "Carrie-Anne Moss"
        ],
        "Id": 2
    }
]

我有这个 JSON 字符串,我想转换 C# 对象:

public class Movies1
{
    public string Title { get; set; }
    public string Genre{ get; set; }
    public List<Actor> Actors { get; set; }
    public int id { get; set; }
}

public class Actor
{
    public string Actors { get; set; }
    public int Id { get; set; }
}

我的反序列化代码:

List<movies> = JsonConvert.DeserializeObject<List<Movies1>>(json);

我收到以下错误:

“ExceptionMessage”:“无法从 System.String 转换或转换为 XXXXX.Models.Actor。”、“ExceptionType”:“System.ArgumentException”、“StackTrace”:“在 Newtonsoft.Json.Utilities.ConvertUtils.EnsureTypeAssignable(Object值,类型 initialType,类型 targetType)\r\n 在 Newtonsoft.Json.Utilities.ConvertUtils.ConvertOrCast(对象初始值,CultureInfo 文化,类型 targetType)\r\n 在 Newtonsoft.Json.Serialization.JsonSerializerInternalReader.EnsureType(JsonReader 阅读器,对象值、CultureInfo 文化、JsonContract 合同、类型 targetType)"

标签: c#.netjson.net

解决方案


似乎Actors是一个字符串列表,你需要的是这样的:

public class Movies1 
{
    public string Title { get; set; } 
    public string GENRE { get; set; } 
    public List<string> Actors { get; set; } 
    public int Id { get; set; } 
}

public class Root    
{
    public List<Movies1> Movies { get; set; } 
}

然后:

Root myDeserializedClass = JsonConvert.DeserializeObject<Root>(myJsonResponse); 

推荐阅读