【发布时间】:2017-02-02 15:17:57
【问题描述】:
我正在搜索一个 json 文件,其结构如下:
{
"objects": [
{
"name": "obj1",
"state": {
"type": 4,
"childs": [
"state": {
"type": 5,
...
状态可以包含状态作为子状态,直到任意数量的级别。现在我试图找到包含某种状态模式的所有对象,例如状态 4 与子状态 5 与子状态 2。
到目前为止,我的代码是这样的。
JObject o = JObject.Parse(System.IO.File.ReadAllText(@"j.json"));
var oObjects=
from p in o["objects"]
where (string)p["state"] == "4"
select (string)p["name"];
如何扩展代码以查找包含任何级别上的搜索模式的所有对象?
【问题讨论】:
-
研究递归。
-
您可以尝试使用
SelectTokens()与..递归下降运算符。见How do I get a deeply-nested property from JSON string?。还有o.DescendantsAndSelf()