- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在使用 Flurl 从 TVDB API 获取 JSON 响应。
我有这门课(现在很笨,只是想获得系列名称):
public class Show
{
public string seriesName;
}
我是这样使用 Flurl 的:
dynamic test = await "https://api.thetvdb.com/search/series?name=battlestar"
.WithHeader("Accept", "application/json")
.WithHeader("Authorization", " Bearer " + token.token)
.GetAsync()
.ReceiveJson<List<Show>>();
我猜它没有将 JSON 正确映射到对象,因为 JSON 中的“数据”键或者它可能无法将它直接解析为 List<>
?我不确定如何映射它。我想要的结果是 List<Show>
与 Show
包含seriesName = "Battlestar Galactica: Blood & Chrome"
, seriesName = "Battlestar Galactica (2003)"
等等等等
{
"data": [
{
"aliases": [
"Blood & Chrome",
"Blood and Chrome"
],
"banner": "graphical/204781-g.jpg",
"firstAired": "2012-11-09",
"id": 204781,
"network": "YouTube",
"overview": "Battlestar: Blood & Chrome takes place in the 10th year of the first Cylon war. As the battle between humans and their creation, a sentient robotic race, rages across the 12 colonial worlds, a brash rookie viper pilot enters the fray. Ensign William Adama (Pasqualino), barely in his 20's and a recent Academy graduate, finds himself assigned to one of the most powerful ships in the Colonial fleet...the Galactica. The talented but hot-headed risk-taker soon finds himself leading a dangerous top secret mission that, if successful, will turn the tide of the decade-long war in favor of the desperate fleet.",
"seriesName": "Battlestar Galactica: Blood & Chrome",
"status": "Ended"
},
{
"aliases": [
"Battlestar Galactica 2003"
],
"banner": "graphical/73545-g11.jpg",
"firstAired": "2003-12-08",
"id": 73545,
"network": "SciFi",
"overview": "In a distant part of the universe, a civilization of humans live on planets known as the Twelve Colonies. In the past, the Colonies have been at war with a cybernetic race known as the Cylons. 40 years after the first war the Cylons launch a devastating attack on the Colonies. The only military ship that survived the attack takes up the task of leading a small fugitive fleet of survivors into space in search of a fabled refuge known as Earth.",
"seriesName": "Battlestar Galactica (2003)",
"status": "Ended"
},
{
"aliases": [],
"banner": "graphical/71173-g.jpg",
"firstAired": "1978-09-17",
"id": 71173,
"network": "ABC (US)",
"overview": "When the 12 Colonies of Man are wiped out by a cybernetic race called the Cylons, Commander Adama (Lorne Greene) and the crew of the battlestar Galactica lead a ragtag fleet of human survivors in search of a \"mythical planet\" called Earth.",
"seriesName": "Battlestar Galactica",
"status": "Ended"
},
{
"aliases": [
"Battlestar Galacticast"
],
"banner": "",
"firstAired": "2007-03-01",
"id": 207131,
"network": "",
"overview": "Matt + Nat give their weekly BSG episode reviews, discuss theories, interview cast members, and more.",
"seriesName": "BSGCast",
"status": "Ended"
},
{
"aliases": [
"Battlestar Galactica 1980"
],
"banner": "graphical/1252-g.jpg",
"firstAired": "1980-01-27",
"id": 71170,
"network": "ABC (US)",
"overview": "Set 30 years after Battlestar Galactica, the Galactica is guided by the mysterious teenage genius prodigy Dr. Zee. Adama, sporting a hideously fake beard, remains in command of the fleet, with Col. Boomer his second in command. Upon realizing Earth of 1980 cannot face the Cylons, and hearing Zee's warning that the Cylons followed them, Adama turns the fleet away, sending his grandson Troy (the grown up Boxey) and his wingman Dillon to explore Earth and aid in speeding up its technological development. They are helped by a reporter named Jamie Hamilton, and new technology such as personal cloaking shields and flying motorcycles.",
"seriesName": "Galactica 1980",
"status": "Ended"
}
]
}
编辑:这是在 ex.Message 中:
Request to https://api.thetvdb.com/search/series?name=battlestar failed. Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'System.Collections.Generic.List`1[TVDBapi.ShowData]' because the type requires a JSON array (e.g. [1,2,3]) to deserialize correctly.
To fix this error either change the JSON to a JSON array (e.g. [1,2,3]) or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List<T>) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.
Path 'data', line 2, position 9.
最佳答案
您发布的 JSON 不是数据数组,它有一个名为 data
的属性,即数组。这意味着您要反序列化的对象不太正确。你应该试试这个:
public class ShowData
{
public List<Show> data { get; set; }
}
public class Show
{
public string[] aliases { get; set; }
public string banner { get; set; }
public string firstAired { get; set; }
public int id { get; set; }
public string network { get; set; }
public string overview { get; set; }
public string seriesName { get; set; }
public string status { get; set; }
}
然后像这样反序列化:
....ReceiveJson<ShowData>();
关于c# - 使用 Flurl 从 JSON 解析为对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38752168/
我想解析 JSON 以使用 Flurl 列出。我的 JSON 数据是这样的。 { "api": { "results": 114, "fixtures": { "195
Asp.NET core 根据配置记录每个进入的请求。现在我想为我发送的 Flurl 请求提供相同的功能。最值得注意的是,我当然想知道请求何时失败或未完成。对于调试,我发现详细记录所有请求非常有帮助。
我在集成测试中使用 Flurl 并尝试配置客户端以记录响应(使用 Flurl.Http 3.0.0)。 我正在使用 event handlers以字符串形式读取响应,然后记录它。但是,如果调用代码使用
将 Blazor 从 0.5.1(使用工作 Flurl)更新到 0.6.0 后,通过 flurl 调用会引发异常: WASM: [Flurl.Http.FlurlHttpException] Call
在执行 ReceiveJson() 时,有什么方法可以映射不匹配的属性名称吗?例如,JSON 中的“user_name”应映射到 C# 对象中的“UserName”。 List people = aw
我试图将一些包含字符串数组的数据发布到端点,但收到错误“无效数组” 这样做: .PostUrlEncodedAsync(new { amount = 1000,
我有一个 .NET Core 2.0 WebApi 应用程序,我在其中将“Flurl.Http”(版本 2.1.0)NuGet 包添加到我的项目中。 我正在尝试使用 Flurl 对 Visual St
我是 Flurl 的新手。我正在尝试调用 api,我故意在参数中传递了无效的 apikey,然后 api 失败并显示“禁止”并显示错误代码 403。我如何在异常中处理它? public async
我正在尝试上传包含正文内容的文件。 PostMultipartAsync 是唯一的方法吗? 在我的 C# 后端代码中,我有这个: var resource = FormBind(); var file
您好,我正在使用 Flurl,我需要为帖子设置多个标题,网站上的文档说明要执行 await url.WithHeaders(new { h1 = "foo", h2 = "bar"}).GetJson
我正在制作一个客户端向服务器发出请求的应用程序。服务器使用 node.js 编写,客户端使用 flurl.Http 编写。 当服务器上的请求失败时,创建自定义错误消息总是有用的。像这样的: reque
我正在开发一个应用程序,我有一个使用Owin Token Bearer的后端服务器Azure API应用程序。我正在尝试登录到我的后端并像在我的网络客户端中一样取回 token 。我可以成功登录,但响
我从 Flurl 开始,我想创建一个 POST,但我认为我的 JSON 参数格式有问题。 可以看到JSON参数: { "aaaUser" : { "attributes" : {
我正在对正在运行的 Rest API 进行一些自动监视,我需要从 HttpResponseMessage 对象检索响应主体。我正在使用 Flurl Http:https://flurl.dev/doc
目录 简介 Url构建 Http 增强 HttpClient 管理 总结 简介 官方介绍,Flurl是一个现代的,流利的
我有一个使用依赖注入(inject)的 .NET HostedService。我的客户端工厂创建了一个策略处理程序,在 DI 中,我将 Flurl 配置为使用该工厂。在 Debug模式下,我可以看到客
我使用 Flurl 客户端有一个简单的发布请求,我想知道如何使用 IP、端口、用户名和密码等信息使用代理发出此请求。 string result = await atc.Request(url)
我目前同时使用 Polly 和 Flurl,但我有一个必须添加到每个请求的通用重试策略。我注意到 Polly 允许您使用 AddPolicyHandler(...) 设置默认值,但这需要一个 IHtt
我正在尝试对捕获 FlurlHttpException 的 Controller 进行单元测试并调用 GetResponseJson()在 catch block 中获取错误消息。我试图模拟异常,但是
我正在使用 Flurl访问需要基于证书的身份验证的 API。我从this SO post看到了将证书添加到 WebRequestHandler 并指示 HttpClient 使用此处理程序很容易。 但
我是一名优秀的程序员,十分优秀!