从Web api获取json数组到c#

我有一个SQL数据库,我想将SQLa 中的值API转换为 c# 代码。该API包含房间属性的多个房间,每个房间有Guid一个ID。


此代码有效,但我只能从中获得一个房间:


string url = "https://api.booking.com/api/room/35bf3c4d-9b5b-40fd-bcf4-a4c2c6c564bc";


HttpClient client = new HttpClient();


string response = await client.GetStringAsync(url);


var data = JsonConvert.DeserializeObject<Class2>(response);

当我删除id(Guid) 以获取所有房间时,我在启动应用程序时收到此错误:


Newtonsoft.Json.JsonSerializationException: '无法将当前 JSON 数组(例如 [1,2,3])反序列化为类型 'Class2',因为该类型需要 JSON 对象(例如 {"name":"value"})才能正确反序列化. 要修复此错误,请将 JSON 更改为 JSON 对象(例如 {"name":"value"})或将反序列化类型更改为数组或实现集合接口的类型(例如 ICollection、IList),例如可以从 JSON 数组反序列化。JsonArrayAttribute 也可以添加到类型中以强制它从 JSON 数组反序列化。路径 '',第 1 行,位置 1。'


这是没有 Guid 的代码:


string url = "https://api.booking.com/api/room";


HttpClient client = new HttpClient();


string response = await client.GetStringAsync(url);


var data = JsonConvert.DeserializeObject<Class2>(response);

我的问题是简短的“如何从 api 获取 json 数组?”。


提前致谢!


编辑:


这是 class2 的代码:


public class Class2

{

    public string name { get; set; }

    public string id { get; set; }

    public int seats { get; set; }

    public int? availableFrom { get; set; }

    public int? availableTo { get; set; }

}

这是来自以下房间的更长输出API:


[

{

    "name": "Rum 1",

    "id": "a31d1fc8-df29-419c-8308-f8bc884b378e",

    "seats": 10,

    "availableFrom": null,

    "availableTo": null

  },

  {

    "name": "Rum 2",

    "id": "7defd34d-222d-4980-b28f-e616e8b9003c",

    "seats": 5,

    "availableFrom": null,

    "availableTo": null

  },

  {

    "name": "Skrubben",

    "id": "b20390ff-703b-4d80-8c2f-32c0f27158bc",

    "seats": 5,

    "availableFrom": 10,

    "availableTo": 11

  },

  {

    "name": "Hangaren",

    "id": "b89cbacd-c738-477f-aff2-7f22c2b2cd5c",

    "seats": 100,

    "availableFrom": null,

    "availableTo": null

  },

  {

    "name": "Tv-rummet",

    "id": "ea6a290f-209b-4ccb-91a4-65d82a674bad",

    "seats": 10,

    "availableFrom": null,

    "availableTo": null

  },



一只萌萌小番薯
浏览 240回答 2
2回答

梵蒂冈之花

多个 Class2 对象必须使用 List 或 Array 类型来转换它们,您可以尝试&nbsp;JsonConvert.DeserializeObject<List<Class2>>(response)
打开App,查看更多内容
随时随地看视频慕课网APP