Как получить WCF DataContract с динамическим членом json

в проекте, над которым я работаю, у нас есть требование иметь DataContract, который может содержать какой-то неопределенный JSON.

DataMember - это некий JSON, который имеет смысл только для клиента. Мы хотим, чтобы клиент отправил нам json, о котором мы не знаем.

Пример:

public class Contract
{
    [DataMember]
    public int clientId;
    [DataMember]
    public string json;
}

Очевидно, что для определения такого контракта клиенту потребуется экранировать json следующим образом:

{
    "clientId":1,
    "json": "{\"test\":\"json\"}"
}

Очевидно, это не то, что нам нужно. JSON, который клиент должен отправить нам, должен выглядеть следующим образом:

{
    "clientId":1,
    "json": {"test":"json"}
}

Возможные решения мы исследовали:

использовать Stream в качестве параметров контракта для запросас телом. Работает, но ставит работу на нашу сторону вместо использования фреймворка.ОпределяющийJSON» как DynamicObject. Не работает. Не удалось получить собственность написана правильно.Используя библиотеку Newtonsoft, измените сериализатор контракта по умолчанию в конечной точке WCF, чтобы сериализовать все входные данные в объект JObject. Мы также обрабатываем сериализацию по запросу, и это вызывает проблемы в нашем приложении. Мы'Я предпочел бы избежать этого пути.

У кого-нибудь есть возможное решение этой проблемы?

РЕДАКТИРОВАТЬ

Сервис предлагает отдых на ресурсах JSON. Он определяет одну конечную точку с помощью webHttpBinding. Операция определяется следующим образом (для простоты выделено):

[WebInvoke(Method = "POST", UriTemplate = "...", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare)]
[OperationContract]
Stream Create(Contract c);

Также сервис украшен следующим атрибутом:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]

Спасибо. JF

Ответы на вопрос(5)

Ваш ответ на вопрос