gpt4 book ai didi

c# - 使用 Json.net 将 Json 转换为 C# 对象

转载 作者:太空宇宙 更新时间:2023-11-03 23:02:34 25 4
gpt4 key购买 nike

我搜索了很多网站,并在我的网络服务器上部署了各种解决方案,结果发现到目前为止我遇到的任何解决方案都没有实际效果。我有以下 JSON:

["{\"EntryNo\":4,\"Title\":\"New Title\",\"Summary\":\"New Summary\",\"Body\":\"New Body\",\"CreatedOn\":\"2017-03-03T03:53:16.2955903+00:00\",\"CreatedBy\":\"Jim Jones\",\"ModifiedBy\":\"Jim Jones\",\"ModifiedOn\":\"2017-02-25T07:06:32.517\",\"Deleted\":false,\"TypeId\":1}",
"{\"EntryNo\":5,\"Title\":\"Old Title\",\"Summary\":\"Old Summary\",\"Body\":\"Old Body\",\"CreatedOn\":\"2017-03-03T03:53:16.2955903+00:00\",\"CreatedBy\":\"Ben Jones\",\"ModifiedBy\":\"Ben Jones\",\"ModifiedOn\":\"2017-02-25T07:06:32.593\",\"Deleted\":false,\"TypeId\":1}"
]

我的模型如下所示:

public class BlogVM
{
[JsonProperty(PropertyName = "EntryNo")]
public int EntryNo { get; set; }

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

[JsonProperty(PropertyName = "Summary")]
public string Summary { get; set; }

[JsonProperty(PropertyName = "Body")]
public string Body { get; set; }

[JsonProperty(PropertyName = "CreatedOn")]
public DateTime CreatedOn { get; set; }

[JsonProperty(PropertyName = "ModifiedOn")]
public DateTime ModifiedOn { get; set; }

[JsonProperty(PropertyName = "CreatedBy")]
public string CreatedBy { get; set; }

[JsonProperty(PropertyName = "ModifiedBy")]
public string ModifiedBy { get; set; }

[JsonProperty(PropertyName = "Deleted")]
public bool Deleted { get; set; }

[JsonProperty(PropertyName = "TypeId")]
public int? TypeId { get; set; }
}

而且我的 Controller 方法无疑是一个大杂烩...

public async Task<ActionResult> _ActualBlogContent()
{
HttpClient client = new HttpClient();
client.BaseAddress = new System.Uri("wwww.myapiaddresshere.com");
client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));

HttpResponseMessage response = client.GetAsync("api/entry/").Result;
if (response.IsSuccessStatusCode)
{
var dataObjects = response.Content.ReadAsStringAsync();
List<BlogVM> pdone = JsonConvert.DeserializeObject<List<BlogVM>>(dataObjects.Result);
}

return View();
}

我收到以下错误消息:

Could not cast or convert from System.String to Models.Blog.BlogVM

我错过了什么?此外,fwiw json2Csharp 不起作用。我传递给它的所有 json 都失败了……但是如果我在 jsonlint.com 上验证了儿子,它就通过了验证测试。

我真的很困惑这里缺少什么。我只是错误地使用了框架吗?

最佳答案

我认为您的 JSON 并没有您想象的那么好。我无法让你发布的内容通过验证,因为在不同的地方有一些错误的引用。

我通过 this JSON formatter 运行了您发布的内容,它给了我各种各样的错误,包括它期待一个字符串的错误。这是因为最开始的["{。反序列化时,它需要一个大括号({),但是你给了它一个引号("),因此出现错误消息。您有几个这样的地方需要大括号,但找到了引号。

这是一些清理过的 JSON。这应该反序列化就好了。

[
{
"EntryNo":4,
"Title":"New Title",
"Summary":"New Summary",
"Body":"New Body",
"CreatedOn":"2017-03-03T03:53:16.2955903+00:00",
"CreatedBy":"Jim Jones",
"ModifiedBy":"Jim Jones",
"ModifiedOn":"2017-02-25T07:06:32.517",
"Deleted":false,
"TypeId":1
},
{
"EntryNo":5,
"Title":"Old Title",
"Summary":"Old Summary",
"Body":"Old Body",
"CreatedOn":"2017-03-03T03:53:16.2955903+00:00",
"CreatedBy":"Ben Jones",
"ModifiedBy":"Ben Jones",
"ModifiedOn":"2017-02-25T07:06:32.593",
"Deleted":false,
"TypeId":1
}
]

问题的真正根源在于格式错误的 JSON 的来源。

关于c# - 使用 Json.net 将 Json 转换为 C# 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42570695/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com