namespace XFEExtension.NetCore.XFETransform.JsonConverter; [Obsolete("请使用 XFEJsonNode.SelectProperties 或 ProjectArray。")] class NodeOperator { /// /// 从列表型复杂节点的每个子对象中提取指定属性,并打包为对象字典列表。 /// /// 需要从每个子对象中提取的属性名称。 /// 包含待处理子对象的复杂 JSON 节点。 /// 保留原始节点并携带已打包对象字典列表的可查询节点。 public static QueryableJsonNode PackageInList(string[] nodeProperties, JsonComplexPropertyNode jsonComplexPropertyNode) { var valueNodes = new List>(); var selectableJsonNode = new QueryableJsonNode(jsonComplexPropertyNode) { InnerValue = valueNodes }; foreach (var node in jsonComplexPropertyNode.DescendingNodes) { if (node is not JsonComplexPropertyNode complexPropertyNode) continue; valueNodes.Add([]); foreach (var childNode in complexPropertyNode.DescendingNodes) if (childNode is JsonPropertyNode jsonPropertyNode && nodeProperties.Contains(jsonPropertyNode.PropertyName)) valueNodes[^1].Add(jsonPropertyNode.PropertyName, new(jsonPropertyNode.Value, jsonPropertyNode.ValueType)); } return selectableJsonNode; } /// /// 从复杂节点中提取指定的直接属性,并打包为单个属性字典。 /// /// 需要从复杂节点中提取的属性名称。 /// 包含待处理属性的复杂 JSON 节点。 /// 保留原始节点并携带已打包属性字典的可查询节点。 public static QueryableJsonNode PackageToList(string[] nodeProperties, JsonComplexPropertyNode jsonComplexPropertyNode) { var valueNodes = new Dictionary(); var selectableJsonNode = new QueryableJsonNode(jsonComplexPropertyNode) { InnerValue = valueNodes }; foreach (var node in jsonComplexPropertyNode.DescendingNodes) { if (node is JsonPropertyNode jsonPropertyNode && nodeProperties.Contains(jsonPropertyNode.PropertyName)) { valueNodes.Add(jsonPropertyNode.PropertyName, new(jsonPropertyNode.Value, jsonPropertyNode.ValueType)); } } return selectableJsonNode; } }