Как отправить вложенный ввод JSON в Restful API

#c# #asp.net #api #rest

Вопрос:

Я хочу опубликовать некоторые данные в веб-API с помощью restful client. Схема Json является:

 {
   "contact":{
      "id":123,
      "first_name":"Jimmy",
      "last_name":"Dee",
      "account_id":123,
      "owned_by":123,
      "email_addresses":[
         {
            "id":123,
            "address":"jimmy@jimmydees.com"
         }
      ],
      "phone_numbers":[
         {
            "id":123,
            "number":"123-123-1234",
            "phone_number_type":"Main",
            "extension":"ex 5"
         }
      ]
   }
}
 

Мой код на C# для этого таков:

 // Endpoint: POST /v1/contacts.json?contact={contact parameters}

var client = new RestClient($"https://api.tripleseat.com/v1/contacts.json")
{
 Authenticator = OAuth1Authenticator.ForProtectedResource(consumerKey, consumerSecret, null, null)
};
string jsonString=JObject.FromObject( new
{
   first_name = "Foo",
   last_name = "foo",
   account_id = 15998446,
   owned_by = 175177,
   email_addresses = new [] { new 
   {
      address = "test@gmail.com" }
   },
   phone_numbers = new[] { new 
       { 
           number = "38239283928" 
       }
   }
 }
}).ToString();
var request = new RestRequest("?contact=", Method.POST);
request.AddParameter("application/json", jsonString, ParameterType.RequestBody);
RestResponse response = (RestResponse)client.Execute(request);
 

Когда я запускаю этот код, генерируется ответ с кодом состояния 200:

 {
   "contact":{
      "id":21152554,
      "first_name":"Foo",
      "last_name":"foo",
      "account_id":15998446,
      "owned_by":175177,
      "email_addresses":[
         {
            "id":21692948,
            "address":""
         }
      ],
      "phone_numbers":[
         {
            "id":39428416,
            "number":null,
            "phone_number_type":null,
            "extension":null
         }
      ]
   }
}
 

Проблема в том, что вложенные объекты адреса электронной почты и номер телефона имеют нулевые значения. Мой вопрос в том, как я могу разместить эти вложенные объекты в своем запросе?

Комментарии:

1. Ваш последний json, похоже, не соответствует вашему коду, на самом деле мне трудно понять, в чем на самом деле проблема, или если этот последний json от сторонней службы или нет

2. Я пытаюсь понять этот API. Что произойдет, если вы попытаетесь использовать в повторном запросе полученные идентификаторы для номера телефона и адреса электронной почты? Возможно, существуют отдельные конечные точки для адресов электронной почты и телефонных номеров. И здесь вы можете назначить контакту только адрес и номер телефона.

3. Код, показывающий, как вы генерируете запрос , но, предположительно, проблема с ответом («Когда я запускаю этот код, генерируется ответ с кодом состояния 200»). Невозможно узнать, почему ответ вообще содержит какие-либо поля, не зная кода на стороне сервера для этого метода.

4. Проблема в том, что когда я отправляю данные на сервер, вложенный объект, т. е. адреса электронной почты и номера телефонов, равны нулю