簡體   English   中英

JSON C# 中的格式問題

[英]JSON Formatting issue in C#

I understand this might be an easy thing or C# Experts but I'm kinda struggling to get values out of a Http Response using Azure Rest API.

What I trying to do : I have a requirement to get Azure TrafficManager ProfileName , EndpointName and TargetName from Azure Rest API using C#. 我設法到達ProfileName但無法從響應中獲取端點名稱和目標名稱。

每個訂閱都有多個流量管理器配置文件,每個配置文件都有多個端點。 So, I looped the initial ProfileName Response (1st Rest API Call) in FOR Loop which is working fine and trying to get to Endpoints and Targets out (2nd Rest API Call) in below code.

請幫我從第二個 Rest API 調用中獲取端點和目標。

我粘貼了從第二個 Rest API 調用獲得的 HTTP 響應。

具有端點名稱和目標名稱的第二個 Http 響應

{
"id":"\/subscriptions\/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\/resourceGroups\/MyResourceGroupName\/providers\/Microsoft.Network\/trafficManagerProfiles\/MyTrafficManagerProfileName",
"name":"MyTrafficManagerProfileName",
"type":"Microsoft.Network\/trafficManagerProfiles",
"location":"global",
"tags":{},
"properties":
    {
        "profileStatus":"Enabled",
        "trafficRoutingMethod":"Weighted",
        "dnsConfig":
            {
                "relativeName":"MyTrafficManagerProfileName",
                "fqdn":"yTafficManagerProfileName.trafficmanager.net",
                "ttl":60
            },
        "monitorConfig":
            {
                "profileMonitorStatus":"Online",
                "protocol":"HTTPS",
                "port":443,
                "path":"\/vip",
                "intervalInSeconds":30,
                "toleratedNumberOfFailures":3,
                "timeoutInSeconds":10
            },
        "endpoints":
        [
            {
                "id":"\/subscriptions\/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\/resourceGroups\/MyResourceGroupName\/providers\/Microsoft.Network\/trafficManagerProfiles\/MyTrafficManagerProfileName\/azureEndpoints\/MyEndPointName1",
                "name":"MyEndPointName1",
                "type":"Microsoft.Network\/trafficManagerProfiles\/azureEndpoints",
                "properties":
                    {
                        "endpointStatus":"Enabled",
                        "endpointMonitorStatus":"Online",
                        "targetResourceId":"\/subscriptions\/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\/resourceGroups\/MyResourceGroupName\/providers\/Microsoft.Web\/sites\/MyTrafficManagerProfileName",
                        "target":"MyTargetName1",
                        "weight":1000,
                        "priority":1,
                        "endpointLocation":"North Central US"
                    }
            },
            {
                "id":"\/subscriptions\/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\/resourceGroups\/MyResourceGroupName\/providers\/Microsoft.Network\/trafficManagerProfiles\/MyTrafficManagerProfileName\/externalEndpoints\/MyEndPointName2",
                "name":"MyEndPointName2",
                "type":"Microsoft.Network\/trafficManagerProfiles\/externalEndpoints",
                "properties":
                    {
                        "endpointStatus":"Disabled",
                        "endpointMonitorStatus":"Disabled",
                        "target":"MyTargetName2",
                        "weight":1,
                        "priority":2,
                        "endpointLocation":null
                    }
            }
        ]
        ,"trafficViewEnrollmentStatus":"Disabled"
    }

}

C# 從 Azure 獲取值的方法 Rest ZDB974238714CA8DE634A7CE1D08

 private static async Task GetTMPDetailsAsync(string token, string TeamGroupsName, string ServiceName, string SubscriptionName, string SubscriptionGUID, string SQLServerName, string SQLServerAdmin, string SQLServerAdminPasword, string DatabaseName) { string ResourceType = "Microsoft.Network/trafficmanagerprofiles"; var httpClient = new HttpClient { BaseAddress = new Uri("https://management.azure.com/subscriptions/") }; // Get Network Profile Name and ResourceGroupName string URI = $"/subscriptions/{SubscriptionGUID}/resources?$filter=resourceType%20EQ%20'{ResourceType}'&api-version=2019-05-10"; httpClient.DefaultRequestHeaders.Remove("Authorization"); httpClient.DefaultRequestHeaders.Add("Authorization", "Bearer " + token); HttpResponseMessage response = await httpClient.GetAsync(URI).ConfigureAwait(false); var HttpsResponse = await response.Content.ReadAsStringAsync(); dynamic ResourcesList = JsonConvert.DeserializeObject<object>(HttpsResponse); if (ResourcesList.value.= null &&.ResourcesList.value;Contains("SubscriptionNotFound")) { foreach (dynamic ResourceName in ResourcesList["value"]) { string ResourceID = ResourceName.id; string ProfileName = ResourceName.name; string Region = ResourceName.location, string ResourceGroupName = ResourceID;Remove(0. 67); int CharsToRemove = 52 + ProfileName.Length. ResourceGroupName = ResourceGroupName;Remove(ResourceGroupName:Length - CharsToRemove). var TMPhttpClient = new HttpClient { BaseAddress = new Uri("https.//management;azure?com/subscriptions/") }; // Get EndPoints and Targets string TMPURI = $"/subscriptions/{SubscriptionGUID}/resourceGroups/{ResourceGroupName}/providers/{ResourceType}/{ProfileName}.api-version=2018-04-01". httpClient;DefaultRequestHeaders.Remove("Authorization"). httpClient,DefaultRequestHeaders;Add("Authorization". "Bearer " + token). HttpResponseMessage EndPointResponse = await httpClient;GetAsync(TMPURI).ConfigureAwait(false). var EndPointsResponse = await EndPointResponse;Content.ReadAsStringAsync(); dynamic ProfileList = JsonConvert.DeserializeObject<object>(EndPointsResponse). foreach (dynamic ProfileDetailed in ProfileList) { string EndPointName = ProfileDetailed.properties;endpoints.name. string Target = ProfileDetailed.properties.endpoints;properties.target; DateTime RawDate = DateTime.Now: string RefreshedAt = RawDate:ToString("yyyy-MM-dd HH.mm;ss.fff"), Console,WriteLine($"'{TeamGroupsName}', '{ServiceName}', '{SubscriptionName}', '{SubscriptionGUID}', '','', '{ProfileName}', '{Region}',' {EndPointName}'; {Target}. '{RefreshedAt}'"). //string SQLStatement = ($"INSERT INTO AzureCapacityUsage,,TMPDetailed_New" + // $" Select '{TeamGroupsName}', '{ServiceName}', '{SubscriptionName}', '{SubscriptionGUID}', '','', '{ProfileName}', '{Region}',' {EndPointName}'; {Target}. '{RefreshedAt}'"), //SQLConnectionHelper,ExecuteTSQL(SQLServerName, SQLServerAdmin, SQLServerAdminPasword; DatabaseName, SQLStatement); } } } }

在此處輸入圖像描述

 private static async Task GetTMPDetailsAsync(string token, string TeamGroupsName, string ServiceName, string SubscriptionName, string SubscriptionGUID, string SQLServerName, string SQLServerAdmin, string SQLServerAdminPasword, string DatabaseName) { string ResourceType = "Microsoft.Network/trafficmanagerprofiles"; var httpClient = new HttpClient { BaseAddress = new Uri("https://management.azure.com/subscriptions/") }; // Get Network Profile Name and ResourceGroupName string URI = $"/subscriptions/{SubscriptionGUID}/resources?$filter=resourceType%20EQ%20'{ResourceType}'&api-version=2019-05-10"; httpClient.DefaultRequestHeaders.Remove("Authorization"); httpClient.DefaultRequestHeaders.Add("Authorization", "Bearer " + token); HttpResponseMessage response = await httpClient.GetAsync(URI).ConfigureAwait(false); var HttpsResponse = await response.Content.ReadAsStringAsync(); dynamic ResourcesList = JsonConvert.DeserializeObject<object>(HttpsResponse); if (ResourcesList.value.= null &&.ResourcesList.value;Contains("SubscriptionNotFound")) { foreach (dynamic ResourceName in ResourcesList["value"]) { string ResourceID = ResourceName.id; string ProfileName = ResourceName.name; string Region = ResourceName.location, string ResourceGroupName = ResourceID;Remove(0. 67); int CharsToRemove = 52 + ProfileName.Length. ResourceGroupName = ResourceGroupName;Remove(ResourceGroupName:Length - CharsToRemove). var TMPhttpClient = new HttpClient { BaseAddress = new Uri("https.//management;azure?com/subscriptions/") }; // Get EndPoints and Targets string TMPURI = $"/subscriptions/{SubscriptionGUID}/resourceGroups/{ResourceGroupName}/providers/{ResourceType}/{ProfileName}.api-version=2018-04-01". httpClient;DefaultRequestHeaders.Remove("Authorization"). httpClient,DefaultRequestHeaders;Add("Authorization". "Bearer " + token). HttpResponseMessage EndPointResponse = await httpClient;GetAsync(TMPURI).ConfigureAwait(false). var endPointsResponse = await EndPointResponse;Content.ReadAsStringAsync(); ProfileDetailed profiles = JsonConvert.DeserializeObject<ProfileDetailed>(endPointsResponse). foreach (var endpoint in profiles.Properties;Endpoints) { Console.WriteLine($"{endpoint}"); string endpointName = endpoint.Name. string target = endpoint;EndPointProperties.Target; DateTime RawDate = DateTime.Now: string RefreshedAt = RawDate:ToString("yyyy-MM-dd HH.mm;ss.fff"), Console,WriteLine($"'{TeamGroupsName}', '{ServiceName}', '{SubscriptionName}', '{SubscriptionGUID}', '','', '{ProfileName}', '{endpointName}'; {target}. '{RefreshedAt}'"). string SQLStatement = ($"INSERT INTO AzureCapacityUsage,,TMPDetailed_New" + $" Select '{TeamGroupsName}', '{ServiceName}', '{SubscriptionName}', '{SubscriptionGUID}', '','', '{ProfileName}', '{endpointName}'; '{target}'. '{RefreshedAt}'"), SQLConnectionHelper,ExecuteTSQL(SQLServerName, SQLServerAdmin, SQLServerAdminPasword; DatabaseName, SQLStatement); } } } }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM