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

问题描述 投票:0回答:1

我想在 ASP.NET Core 中使用 Mapbox 匹配。此链接您可以获得回复https://api.mapbox.com/matching/v5/mapbox/driven/..

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

var jsonResponse = JsonConvert.DeserializeObject(mapResponse);

但我得到空值。有什么帮助吗?

asp.net-core mapbox jsonconvert
1个回答
1
投票

首先,您共享的 API 我得到了以下响应 邮递员:

如果它与您得到的相同,那么我将按照以下步骤从 C# asp.net core 控制器中的 API 响应中检索值。

您应该拥有的型号:

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核心控制器:

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;
        }}

输出:

注意

您应该根据 API 响应绑定您的类。我对你的空值的假设是你还没有转换相关的 相应地上课。

© www.soinside.com 2019 - 2024. All rights reserved.