gpt4 book ai didi

c# - 在不声明模型类的情况下解析 JSON

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

我有这样的 JSON:

{
"bookings": {
"group_id": "abc",
"name": "Study Rooms",
"url": "My URL",
"timeslots": [{
"room_id": "bcd",
"room_name": "101",
"booking_label": "Meeting1",
"booking_start": "2018-11-30T07:00:00-06:00",
"booking_end": "2018-11-30T07:30:00-06:00",
"booking_created": "2018-11-28T11:32:32-06:00"
}, {
"room_id": "cde",
"room_name": "102",
"booking_label": "Meeting2",
"booking_start": "2018-11-30T07:30:00-06:00",
"booking_end": "2018-11-30T08:00:00-06:00",
"booking_created": "2018-11-28T11:32:32-06:00"
}, //##AND many more like this##
]
}
}

如果我尝试这样解析它:

var reservations = new { bookings = new { group_id = "", name = "", url="", timeslots = new List<Timeslot>() } };
Newtonsoft.Json.JsonConvert.PopulateObject(jsonResult, reservations);

只有时隙元素被填充

但是,如果我声明一个具有属性 groop_id、名称、url 和时隙集合的模型类,并像这样解析:

var reservations = new { bookings = new BookingsModel() };
Newtonsoft.Json.JsonConvert.PopulateObject(jsonResult, reservations);

它工作正常。

问题是为什么,是否可以在没有模型静态声明的情况下解析 JSON 的所有元素。

最佳答案

您无法填充匿名对象的原因是,在 C# 中,匿名类型是 immutable .

相反,您可以使用 JsonConvert.DeserializeAnonymousType()这将从您现有的实例创建一个匿名类型的新实例:

var reservations = Newtonsoft.Json.JsonConvert.DeserializeAnonymousType(jsonResult, 
new { bookings =
new { group_id = default(string), name = default(string), url=default(string),
timeslots = default(List<Timeslot>) } });

fiddle 示例 here .

关于c# - 在不声明模型类的情况下解析 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53636516/

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