如何为json对象中的段发送array[]

how to send array [] for segments in json objects

本文关键字:段发送 array json 对象      更新时间:2023-09-26

这是我的Api Controller方法,它正在与Rest Api Url对话。我正在发送所有必要的数据来在此Url上进行搜索。现在,一切都好了,它返回Http状态代码200和正确的响应。示例代码是:

   [System.Web.Http.HttpPost]
    public async Task<HttpResponseMessage> SearchFlight([FromBody]SearchForFlight sof)
    {
        string url = "http://api.tektravels.com/BookingEngineService_Air/AirService.svc/rest/Search/";
        using (HttpClient client = new HttpClient())
        {
            client.BaseAddress = new Uri(url);
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new
            System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
            var payload = JsonConvert.SerializeObject(sof);
            var response = await client.PostAsync(url, new StringContent(payload, Encoding.UTF8, "application/json"));
            var json = await response.Content.ReadAsStringAsync();
            HttpResponseMessage res = Request.CreateResponse(HttpStatusCode.OK, json);
            return res;
       }
    }

我正在序列化软件对象并发布回客户端对象:

 var response = await client.PostAsync(url, new StringContent(payload, Encoding.UTF8, "application/json"));

现在,如果我尝试使用以下内容从该响应中读取字符串形式的内容:

  var json = await response.Content.ReadAsStringAsync();

现在,我没有得到适当的回应。我得到的回复是:

"{'"Response'":{'"ResponseStatus'":3, 
 '"Error'":{'"ErrorCode'":3,'"ErrorMessage'":'"Please specify Flight Segment.'"},
'"TraceId'":'"98b33a39-5dd9-48fa-999c-0eb5c99adef1'"}}"

问题就在这里根据文档,Segment对象应该是这样的:

"Segments": [
             {
              "Origin": "DEL",
              "Destination": "BOM",
              "FlightCabinClass": "1",
              "PreferredDepartureTime": "2015-11-06T00: 00: 00",
              "PreferredArrivalTime": "2015-11-06T00: 00: 00"
             }
            ],

当我使用这段代码将数据发送回webapi控制器时这里我已经从Segments对象中省略了[]数组符号

  <script>
        $(document).ready(function () {                 
            $("#btnPost").click(function () {
                var sof = {
                    AdultCount: $("#AdultCount").val(),
                    JourneyType: $("#JourneyType :selected").text(),
                    PreferredAirlines: null,
                    Segments: {
                            Origin: $("#Origin").val(),
                            Destination: $("#Destination").val(),
                            FlightCabinClass: $("#FlightCabinClass").val(),
                            PreferredDepartureTime: $("#PreferredDepartureTime").val(),
                            PreferredArrivalTime: $("#PreferredArrivalTime").val(),
                        },
                };

如果我没有省略这个[]数组符号,那么我就无法将正确的数据发布回webapi控制器。如果我省略了,那么我的回答就是错误的。如何通过json对象数组为嵌套对象赋值,我被告知要省略,正如你在这个问题中看到的那样请有人帮我。

在SearchForFlight类中,将Segments属性设置为列表。

 public List<otherType> Segments { get; set; }

在js中,使用数组

 Segments: [
             {
                Origin: $("#Origin").val(),
                Destination: $("#Destination").val(),
                FlightCabinClass: $("#FlightCabinClass").val(),
                PreferredDepartureTime: $("#PreferredDepartureTime").val(),
                PreferredArrivalTime: $("#PreferredArrivalTime").val(),
              }
           ]