gpt4 book ai didi

json - 将 JObject 转换为集合

转载 作者:行者123 更新时间:2023-12-03 09:26:59 26 4
gpt4 key购买 nike

我有以下代码:

JToken hours = jToken["hours"];

它返回以下 JSON:

{
"monday": [
["11:00", "21:30"]
],
"tuesday": [
["11:00", "21:30"]
],
"wednesday": [
["11:00", "21:30"]
],
"thursday": [
["11:00", "21:30"]
],
"friday": [
["11:00", "2:00"]
],
"saturday": [
["11:00", "2:00"]
],
"sunday": [
["11:00", "21:30"]
]
}

我需要将其解析为类型化集合,例如

<string, string> 

或为任何一天选择一个值,例如

hours.Where(p=>p["monday"].Value<string>())

我尝试过:

IList<JToken> a = hours.Children().ToList();

var a = JsonConvert.DeserializeObject<Pair<string, string>>(hours.Value<string>());

var a = hours["monday"];

hours.Where(p=>p["monday"].Value<string>())

没有工作。

最佳答案

至少可以说,这个 JSON 很奇怪。它包含列表列表中的小时数。可能的原因之一是一天可以包含多个小时列表。您应该将此问题指向您拥有的 JSON 的来源。

无论如何,正确的集合类型是这样的:

using HoursCollection = Dictionary<string, List<List<string>>>;

您可以使用以下方法将字符串转换为该集合:

var a = JsonConvert.DeserializeObject<HoursCollection>(hours.ToString());

但是,更好的主意是使用您已有的 JObject:

var a = hours.ToObject<HoursCollection>();

您可以通过以下方式从此集合中获取周一的小时数:

var h = a["monday"].SelectMany(i => i);

SelectMany 此处用于展平列表列表。

关于json - 将 JObject 转换为集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18815645/

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