c# - 具有字符串列表的 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)"
解决方案
似乎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);
推荐阅读
- node.js - 如何向我的网络应用程序的用户显示不同的内容?MERN 堆栈
- python - Python:如何从开始、停止、步进循环的迭代中调用中断后的位置
- css - 多行 FormInput 元素离开屏幕
- jquery - 为什么我按下按钮时所有信息都消失了
- php - 在使用 Jalali 波斯日期的字符串上调用成员函数 diff()
- google-apps-script - 向公式添加参数
- php - 将变量解析为类对象
- javascript - Serverless 不创建 SQS 事件
- sql - SQL CASE WHEN 与多个 AND 和 OR
- python - 将多个引用应用于单个函数的最佳 Pythonic 方法