gpt4 book ai didi

c# - 如何将 JSON 反序列化到这个 POCO 类中?

转载 作者:行者123 更新时间:2023-12-03 21:50:15 24 4
gpt4 key购买 nike

错误:

无法将类型“UserItem”隐式转换为“RootObject”

如何将 JSON 反序列化到这个 POCO 类中?

我只是想将 json 数据反序列化为 C# 自定义 poco 类,如下所示,这是我到目前为止所做的;

public static UserItem DownloadJSONString(string urlJson)
{
using (WebClient wc = new WebClient())
{
var json = wc.DownloadString(urlJson);
UserItem userItems = JsonConvert.DeserializeObject<RootObject>(json);

return userItems;
}
}

我有点困在这里

这里是我的 Json:

{
"meta":
{
"status":200,
"resultSet":
{
"id":"05"
},
"pagination":
{
"count":2,
"pageNum":1,
"pageSize":2
}
},
"results":
{
"id":0,
"name":
"title",
"items":
[
{
"id":0,
"name":"English",
"title":"English",
},
{
"id":0,
"name":"Spanish",
"title":"Spanish;",
}
]
}
}

这是我的 json 对象(从 json 生成到 c# 类)

public class ResultSet
{
public string id { get; set; }
}

public class Pagination
{
public int count { get; set; }
public int pageNum { get; set; }
public int pageSize { get; set; }
}

public class Meta
{
public int status { get; set; }
public ResultSet resultSet { get; set; }
public Pagination pagination { get; set; }
}

public class Item
{
public int id { get; set; }
public string name { get; set; }
public string title { get; set; }
}

public class Results
{
public int id { get; set; }
public string name { get; set; }
public List<Item> items { get; set; }
}

public class RootObject
{
public Meta meta { get; set; }
public Results results { get; set; }
}

这是我的简单 UserItem POCO 类

public class UserItem 
{
public int id { get; set; }
public string name { get; set; }
public string title { get; set; }
}

最佳答案

给你:

var root = JsonConvert.DeserializeObject<RootObject>(json);
var userItem = root.results.items
.Select(i => new UserItem
{
id = i.id,
name = i.name,
title = i.title
}).FirstOrDefault();

return userItem;

如您所知,您不能只将 Item 类转换为 UserItem,但您可以构建一个。这里要注意的一件事是,很明显,如果您只想退回一个,则只需要拿一个。在这里,我捕获了第一个或默认值。例如,如果列表为空,则默认值为 null

关于c# - 如何将 JSON 反序列化到这个 POCO 类中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20110468/

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