gpt4 book ai didi

c# - 为 JSON 提要定义嵌套类的最佳方式

转载 作者:太空宇宙 更新时间:2023-11-03 16:27:56 24 4
gpt4 key购买 nike

我目前正在使用 C# 中的 Facebook API,使用 NewtonSoft JSON 库来使用所有返回的 API 数据。

返回用户页面列表 我发现自己为返回的 JSON 中的属性创建了一个类,以便对其进行序列化。

现在我有这个:

    public class FacebookPage
{
public string id { get; set; }
public string name { get; set; }
public string link { get; set; }
public string category { get; set; }
public bool is_published { get; set; }
public bool can_post { get; set; }
public int likes { get; set; }
public FacebookPageLocation location { get; set; }
public string phone { get; set; }
public int checkins { get; set; }
public string picture { get; set; }
public FacebookPageCover cover { get; set; }
public string website { get; set; }
public int talking_about_count { get; set; }
public string access_token { get; set; }
}
public class FacebookPageLocation
{
public decimal latitude { get; set; }
public decimal longitude { get; set; }
}
public class FacebookPageCover
{
public string cover_id { get; set; }
public string source { get; set; }
public int offset_y { get; set; }
}

看来必须有更好的方法来做到这一点。我可以将 FacebookPageLocation 替换为 Dictionary,但我将如何替换 FacebookCoverPage?

理想情况下,我希望能够以一种漂亮的嵌套格式声明它,就像这样

    public class FacebookPage
{
id = string,
name = string.
link = string,
category = string,
is_published = bool,
can_post = bool,
likes = int,
location =
{
latitude = decimal,
longtitude = decimal
},
phone = string,
checkins = int,
picture = string,
cover =
{
cover_id = string,
source = string,
offset_y = int
}
website = string,
talking_about_count = int,
access_token = string
}

我知道这在实践中行不通,但是有什么可以让声明这些类型的类更整洁吗?还是不必要的?

最佳答案

我不会声明很多类,而是使用dynamic。对于下面的示例 json

{
"name": "joe",
"id": 1151,
"location": {
"lat": 180.0,
"lng": -180.0
}
}

-

代码是

dynamic obj = JsonConvert.DeserializeObject(json);
Console.WriteLine("{0} {1} {2}", obj.id, obj.name, obj.location.lat);

关于c# - 为 JSON 提要定义嵌套类的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11936445/

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