【发布时间】:2019-07-04 19:24:33
【问题描述】:
我有 JSON 数组,例如:
[
{
"type": "type1",
"id": "id1",
"properties":
{
"sales":
[
{
"name": "name1",
"requested_date": "2019-06-28"
}
]
}
},
{
"type": "type1",
"id": "id2",
"properties":
{
"sales":
[
{
"name": "name2",
"requested_date": "2019-06-28"
}
]
}
},
{
"type": "type1",
"id": "id3",
"properties":
{
"sales":
[
{
"name": "name3",
"requested_date": "2019-06-29"
}
]
}
}
]
我想先通读它以提取请求日期的所有唯一值,所以在这种情况下,我会得到“2019-06-28”、“2019-06-29”。
其次,我需要能够选择与指定请求日期的选定值有关的所有条目。我已经有一个用于销售的 POCO,一个用于整个条目,但属性只是对象字典,因为它可以是任何东西,就像在这种情况下它是一个销售。
我的 JSON 在 JArray 中:
var stringCachedAddresses = JsonConvert.SerializeObject(cachedAddresses);
var parsedObject = JArray.Parse(stringCachedAddresses);
我只是不知道如何导航到每个条目的 requested_date,将值添加到列表中(如果不存在),也许是某种我无法弄清楚的 LINQ。
我可以获得所有销售的清单:
var parsedProperties = (from f in parsedObject
select f["properties"]["sales"]).ToList();
如何从parsedProperties 读取或直接获取requested_date 的值?
【问题讨论】:
-
到目前为止你尝试过什么代码?您是否遇到了特定的错误或问题?如果您还没有这样做,请查看this 帮助文章,了解如何提出好的问题。
-
这里有数百篇关于 JSON 序列化和解析的帖子。
-
是的,但至少没有找到像这样的多层级,大部分时间是非常简单的 Json,很少像我正在寻找的那样从中选择值。
-
其次,我需要能够选择与指定请求日期的选定值有关的所有条目。我已经有一个用于销售的 POCO... 堆栈溢出问题的首选格式是 one question per post,所以您能否将其分解为单独的帖子并显示
SalesPOCO。 -
对于第一部分,如果您只想在 JSON 层次结构中查找所有出现的
"requested_date",请参阅 Find a value of all occurrences from the json string in c# 或 How do I get a deeply-nested property from JSON string?,例如变量query = parsedObject.SelectTokens("..requested_date")..Select(t => t.ToObject<DateTime>()).Distinct();: dotnetfiddle.net/BkAEaP