如何通过父级名称未知的二级属性过滤json?

时间:2019-05-21 15:31:17

标签: javascript json

我需要过滤来自服务器的JSON。问题在于属性名称是可变的,因此我无法事先设置。有这样做的干净方法吗?

这是我的应用程序获取的JSON示例:

{0: {SchemaVersion: "15.0.0.0", LibraryVersion: "16.0.8908.1207", ErrorInfo: null, TraceCorrelationId: "e2c3de9e-20a8-0000-a44c-e76e7f8e0cea"}
1: 1
2: {IsNull: false}
3: 5
4: {IsNull: false}
5: 14
6: {IsNull: false}
7: 18
8: {IsNull: false}
9: 31
10: {IsNull: false}
11: 52
12: {IsNull: false}
13: 57
14:
8899eccf-b0b6-4a9e-978c-cd2f14f4ef2d849ad13c-ea4f-4cb7-b227-5b66ef558040:
{ElapsedTime: 181
Properties: {RowLimit: 3, SourceId: "/Guid(4b9d73a0-993b-4428-989a-6b48dad9687e)/", CorrelationId: "/Guid(e2c3de9e-20a8-0000-a44c-e76e7f8e0cea)/", WasGroupRestricted: false, IsPartial: false, …}
QueryErrors: null
QueryId: "75d8ce01-ae02-41b9-9393-0038ee4a3ba5"
ResultTables: [{…}]
SpellingSuggestion: ""
TriggeredRules: []
_ObjectType_: "Microsoft.SharePoint.Client.Search.Query.ResultTableCollection"
}
15: 53
16: {HasException: false, ErrorInfo: null}
}

我需要通过检查其“ ObjectType ”属性来提取ID为14的对象。但是属性名称(在示例中:“ 8899eccf-b0b6-4a9e-978c-cd2f14f4ef2d849ad13c-ea4f-4cb7-b227-5b66ef558040”每次都不同。

1 个答案:

答案 0 :(得分:1)

使用Object.keys()返回对象的所有键的数组。然后,您可以使用这些键按所需属性进行过滤。

let keys = Object.keys(myJson)
let foundObj = keys.filter(function(k) {
  return k['_ObjectType_'] === 'Microsoft.SharePoint.Client.Search.Query.ResultTableCollection'
})