我想通过skuPartNumber选择值servicePlanName和provisioningStatus
例如,如果我指定了"skuPartNumber": "POWER_BI_STANDARD",我应该得到以下结果
EXCHANGE_S_FOUNDATION
PendingProvisioning
BI_AZURE_P0
Success我已经参考了Newtonsoft文档here和here以及堆栈溢出here
这是JSON
{
"@odata.context": "",
"value": [
{
"id": "00-00-0",
"skuId": "0-000-0000-00-00000",
"skuPartNumber": "POWER_BI_STANDARD",
"servicePlans": [
{
"servicePlanId": "0000000-0000000-00000-0000-0000000",
"servicePlanName": "EXCHANGE_S_FOUNDATION",
"provisioningStatus": "PendingProvisioning",
"appliesTo": "Company"
},
{
"servicePlanId": "0000000-0000000-00000-0000-0000000",
"servicePlanName": "BI_AZURE_P0",
"provisioningStatus": "Success",
"appliesTo": "Company"
}
]
},
{
"id": "000-0000",
"skuId": "0-000-00-00-000",
"skuPartNumber": "STANDARDPACK",
"servicePlans": [
{
"servicePlanId": "0000000-0000000-00000-0000-0000000",
"servicePlanName": "DYN365_CDS_O365_P1",
"provisioningStatus": "Success",
"appliesTo": "Company"
},
{
"servicePlanId": "0000000-0000000-00000-0000-0000000",
"servicePlanName": "KAIZALA_O365_P2",
"provisioningStatus": "Disabled",
"appliesTo": "Company"
},
{
"servicePlanId": "0000000-0000000-00000-0000-0000000",
"servicePlanName": "MICROSOFT_SEARCH",
"provisioningStatus": "PendingProvisioning",
"appliesTo": "Company"
},
{
"servicePlanId": "0000000-0000000-00000-0000-0000000",
"servicePlanName": "WHITEBOARD_PLAN1",
"provisioningStatus": "Disabled",
"appliesTo": "Company"
},
{
"servicePlanId": "0000000-0000000-00000-0000-0000000",
"servicePlanName": "MYANALYTICS_P2",
"provisioningStatus": "Disabled",
"appliesTo": "Company"
},
{
"servicePlanId": "0000000-0000000-00000-0000-0000000",
"servicePlanName": "OFFICEMOBILE_SUBSCRIPTION",
"provisioningStatus": "Success",
"appliesTo": "Company"
},
{
"servicePlanId": "0000000-0000000-00000-0000-0000000",
"servicePlanName": "BPOS_S_TODO_1",
"provisioningStatus": "Disabled",
"appliesTo": "Company"
},
{
"servicePlanId": "0000000-0000000-00000-0000-0000000",
"servicePlanName": "FORMS_PLAN_E1",
"provisioningStatus": "Disabled",
"appliesTo": "Company"
},
{
"servicePlanId": "0000000-0000000-00000-0000-0000000",
"servicePlanName": "STREAM_O365_E1",
"provisioningStatus": "Success",
"appliesTo": "Company"
},
{
"servicePlanId": "0000000-0000000-00000-0000-0000000",
"servicePlanName": "Deskless",
"provisioningStatus": "Disabled",
"appliesTo": "Company"
},
{
"servicePlanId": "0000000-0000000-00000-0000-0000000",
"servicePlanName": "FLOW_O365_P1",
"provisioningStatus": "Disabled",
"appliesTo": "Company"
},
{
"servicePlanId": "0000000-0000000-00000-0000-0000000",
"servicePlanName": "POWERAPPS_O365_P1",
"provisioningStatus": "Disabled",
"appliesTo": "Company"
},
{
"servicePlanId": "0000000-0000000-00000-0000-0000000",
"servicePlanName": "TEAMS1",
"provisioningStatus": "Success",
"appliesTo": "Company"
},
{
"servicePlanId": "0000000-0000000-00000-0000-0000000",
"servicePlanName": "SHAREPOINTWAC",
"provisioningStatus": "Disabled",
"appliesTo": "Company"
},
{
"servicePlanId": "0000000-0000000-00000-0000-0000000",
"servicePlanName": "PROJECTWORKMANAGEMENT",
"provisioningStatus": "Disabled",
"appliesTo": "Company"
},
{
"servicePlanId": "0000000-0000000-00000-0000-0000000",
"servicePlanName": "SWAY",
"provisioningStatus": "Disabled",
"appliesTo": "Company"
},
{
"servicePlanId": "0000000-0000000-00000-0000-0000000",
"servicePlanName": "INTUNE_O365",
"provisioningStatus": "PendingActivation",
"appliesTo": "Company"
},
{
"servicePlanId": "0000000-0000000-00000-0000-0000000",
"servicePlanName": "YAMMER_ENTERPRISE",
"provisioningStatus": "Success",
"appliesTo": "Company"
},
{
"servicePlanId": "0000000-0000000-00000-0000-0000000",
"servicePlanName": "MCOSTANDARD",
"provisioningStatus": "Disabled",
"appliesTo": "Company"
},
{
"servicePlanId": "0000000-0000000-00000-0000-0000000",
"servicePlanName": "SHAREPOINTSTANDARD",
"provisioningStatus": "Disabled",
"appliesTo": "Company"
},
{
"servicePlanId": "0000000-0000000-00000-0000-0000000",
"servicePlanName": "EXCHANGE_S_STANDARD",
"provisioningStatus": "Success",
"appliesTo": "Company"
}
]
},
{
"id": "000000000000000-0000000-000",
"skuId": "00000000000-0000-0000-0000-00000000000",
"skuPartNumber": "PROJECTPREMIUM",
"servicePlans": [
{
"servicePlanId": "0000000-0000000-00000-0000-0000000",
"servicePlanName": "PROJECT_PROFESSIONAL",
"provisioningStatus": "Success",
"appliesTo": "Company"
},
{
"servicePlanId": "0000000-0000000-00000-0000-0000000",
"servicePlanName": "FLOW_FOR_PROJECT",
"provisioningStatus": "Success",
"appliesTo": "Company"
},
{
"servicePlanId": "0000000-0000000-00000-0000-0000000",
"servicePlanName": "DYN365_CDS_PROJECT",
"provisioningStatus": "Success",
"appliesTo": "Company"
},
{
"servicePlanId": "0000000-0000000-00000-0000-0000000",
"servicePlanName": "EXCHANGE_S_FOUNDATION",
"provisioningStatus": "PendingProvisioning",
"appliesTo": "Company"
},
{
"servicePlanId": "0000000-0000000-00000-0000-0000000",
"servicePlanName": "SHAREPOINTWAC",
"provisioningStatus": "Success",
"appliesTo": "Company"
},
{
"servicePlanId": "0000000-0000000-00000-0000-0000000",
"servicePlanName": "SHAREPOINT_PROJECT",
"provisioningStatus": "Success",
"appliesTo": "Company"
},
{
"servicePlanId": "0000000-0000000-00000-0000-0000000",
"servicePlanName": "SHAREPOINTENTERPRISE",
"provisioningStatus": "Success",
"appliesTo": "Company"
},
{
"servicePlanId": "0000000-0000000-00000-0000-0000000",
"servicePlanName": "PROJECT_CLIENT_SUBSCRIPTION",
"provisioningStatus": "Success",
"appliesTo": "Company"
}
]
}
]
}我尝试过以下几种方法
public static async Task<string[]> GetUserApplicationSubscriptionsForSpecificLicence(HttpClient client, string user)
{
var payload = await client.GetStringAsync($"https://graph.microsoft.com/v1.0/users/{user}/licenseDetails");
var obj = JsonConvert.DeserializeObject<JObject>(payload);
var groupDescription = from g in obj["value"].Children()
where g["skuPartNumber"].Contains("STANDARDPACK")
select g["servicePlans"].Children().Value<string>();
return groupDescription.ToArray();
}public static async Task<string[]> GetUserApplicationSubscriptionsForSpecificLicence2(HttpClient client, string user)
{
var payload = await client.GetStringAsync($"https://graph.microsoft.com/v1.0/users/{user}/licenseDetails");
var obj = JsonConvert.DeserializeObject<JObject>(payload);
IList<string> storeNames = obj.SelectToken("$..value[?(@.skuPartNumber== 'PROJECTPREMIUM')]").Select(s => (string)s).ToList();
return storeNames.ToArray();
}我无法理解这件事。
如果有人能帮上忙那就太好了!
发布于 2020-07-02 04:00:05
使用LINQ,你可以这样做:
var result = obj["value"]
.Children()
.Where(c => c["skuPartNumber"].Value<string>() == "POWER_BI_STANDARD")
.Select(c => c["servicePlans"])
.Where(i => i != null)
.SelectMany(i => i.Children())
.Select(c => (planName: c["servicePlanName"], status: c["provisioningStatus"]))
.ToList();这将返回两个元组的json集合:
planName status
EXCHANGE_S_FOUNDATION PendingProvisioning
BI_AZURE_P0 Success 或者,如果你只想要字符串,你可以这样做:
var strings = obj["value"]
.Children()
.Where(c => c["skuPartNumber"].Value<string>() == "POWER_BI_STANDARD")
.Select(c => c["servicePlans"])
.Where(i => i != null)
.SelectMany(i => i.Children())
.SelectMany(c => new[] { c["servicePlanName"].Value<string>(), c["provisioningStatus"].Value<string>()})
.ToArray();使用json路径:
var strings = obj.SelectTokens("$.value[?(@.skuPartNumber == 'POWER_BI_STANDARD')].servicePlans[*].['servicePlanName','provisioningStatus']")
.Select(t => t.Value<string>())
.ToList()https://stackoverflow.com/questions/62684335
复制相似问题