c# веб-сервис wcf принимает json динамический c данные - PullRequest
0 голосов
/ 29 мая 2020

Я хочу, чтобы мой c# веб-сервис принимал динамические c данные.

прямо сейчас я делаю это

класс:

 [DataContractFormat]
    public class person
    {

        public string name { get; set; }
        public string address { get; set; }
        public string age { get; set; }
    }

метод

public string person(person p)
        {

            string name = p.name;
            return name;
        }



[WebInvoke(UriTemplate = "/person/do",
        Method = "POST",
         RequestFormat = WebMessageFormat.Json,
          ResponseFormat = WebMessageFormat.Json
               )]
        string person(person p);

это мое json тело

{
    "name":"",
    "address":"",
    "age":""
}

Я не хочу определять свойства в классе и хочу, чтобы он принимал любые данные, которые я ему отправляю. теперь он принимает "name": "", "address": "", "age": "например: если я хочу, я могу указать дату рождения, не определяя ее в классе. Надеюсь, вы поймете

1 Ответ

0 голосов
/ 01 июня 2020

Я понимаю, что вы имеете в виду. Обычно после запуска службы WCF вы можете просмотреть ее справочный документ, чтобы просмотреть формат данных, полученных службой WCF.

      [OperationContract]
    [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
    Result PostUserData(UserData user);

Это определение интерфейса службы WCF .

        public class UserData
{
    [DataMember(Name = "Name")]
    public string Name { get; set; }
    [DataMember(Name = "Password")]
    public string Password { get; set; }
    [DataMember(Name = "Email")]
    public string Email { get; set; }
}

Это определение класса UserData, который имеет три свойства: имя, пароль, адрес электронной почты.

enter image description here

Согласно вашему описанию, если мы отправим Josn не в указанном выше формате в службу WCF, служба WCF получит JSON без ошибок.

enter image description here

Но теперь проблема. Вы не определяете эти атрибуты в классе. Как вы их получаете? Для получения данных вы можете анализировать только JSON. Конечно, вы можете отправить то, что вы называете динамическими c данными, в службу WCF, но когда вы их получаете, вы только сами анализируете данные *. 1021 *

...