Mapbox 匹配响应在 ASP.NET Core 中转换为动态 json

Mapbox matching response convert to dynamic json in ASP.NET Core

我想在 ASP.NET Core 中使用 mapbox 匹配。这个link你可以得到回复https://api.mapbox.com/matching/v5/mapbox/driving/..

我想在 Asp.net 核心中将此响应转换为动态 json,我使用此行

var jsonResponse = JsonConvert.DeserializeObject(mapResponse);

但我得到的是空值。有帮助吗?

Firstly, The API you have shared I got follwing response using postman:

If its same what you are getting then I follow below steps to retrive the value from the API response in C# asp.net core controller

Model You should have :

public class Admin
        {
            public string iso_3166_1_alpha3 { get; set; }
            public string iso_3166_1 { get; set; }
        }

        public class Leg
        {
            public List<object> via_waypoints { get; set; }
            public List<Admin> admins { get; set; }
            public double weight { get; set; }
            public double duration { get; set; }
            public List<object> steps { get; set; }
            public double distance { get; set; }
            public string summary { get; set; }
        }

        public class Matching
        {
            public double confidence { get; set; }
            public string weight_name { get; set; }
            public double weight { get; set; }
            public double duration { get; set; }
            public double distance { get; set; }
            public List<Leg> legs { get; set; }
            
            public string geometry { get; set; }
        }

        public class Tracepoint
        {
            public int matchings_index { get; set; }
            public int waypoint_index { get; set; }
            public int alternatives_count { get; set; }
            public double distance { get; set; }
            public string name { get; set; }
            public List<double> location { get; set; }
        }

        public class MapResponseClass
        {
            public List<Matching> matchings { get; set; }
            public List<Tracepoint> tracepoints { get; set; }
            public string code { get; set; }
            public string uuid { get; set; }
        }

Asp.net core Controller:

public async Task<IActionResult> CallMapAPI()
        {

           try
            {
                HttpClient client = new HttpClient();
                HttpResponseMessage response = await client.GetAsync("https://api.mapbox.com/matching/v5/mapbox/driving/-117.17282,32.71204;-117.17288,32.71225;-117.17293,32.71244;-117.17292,32.71256;-117.17298,32.712603;-117.17314,32.71259;-117.17334,32.71254?access_token=pk.eyJ1Ijoibm92ZXJzbWFwIiwiYSI6ImNreTdwc3ppNTE3dzkyb3B2MnVzNXpueTUifQ.csYTL2GKkl99Yqk_TQjr5w");
                response.EnsureSuccessStatusCode();
                string mapAPIjson = await response.Content.ReadAsStringAsync();
             
                var data = JsonConvert.DeserializeObject<MapResponseClass>(mapAPIjson);
            }
            catch (Exception ex)
            {

                throw;
            }

            

            return data;
        }}

Output:

Note:

You should bound your class as per your API response. What I am assuming of your empty values is you haven't converted the relevant class accordingly. I hope above steps guided you accordingly.