Как можно в веб-сервисе указать сериализатором JsonConvert, Newtonsoft
Нужно для правильной возвращаемой структуры типов CompositeObject, без Key/Value, а нативно - {"key": value}
Нравится
нативно, имеешь ввиду через jobject? или имеешь ввиду задать column key кастомный, если оно, то аннотация(не помню как с# это называется) jsonproperty может помочь наверное
[JsonProperty("Ref_Key", NullValueHandling = NullValueHandling.Ignore)] или имеешь ввиду избавиться от имени метода в возвращаемом объекте? тогда наверное стоит юзать это BodyStyle = WebMessageBodyStyle.Bare в аннотации
[OperationContract]
[WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json,RequestFormat =
WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare)]
в этом случае, тебе не надо будет писать название объекта передаваемого в тело метода и возвращаемом тоже не будет его в названии
типа так user:{name:"3213"} станет {name:"3232"}
Dima Avdoshin,
можно и через JObject главное что бы можно динамично составлять структуры данных. попытка вернуть JObject вообще дает 500 ошибку, как я понимаю дефолтный сериализатор не умеет в JObject.
задача сама в том что возвращать сразу красиво, а не через строку через - JsonConvert.SerializeObject.
сейчас на такой код в сервисе:
[OperationContract]
[WebInvoke(Method = "GET",
RequestFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped,
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "/ping/{s}")]
[return: MessageParameter(Name = "data")]
public object Pong(string s) {
var res = new CompositeObject();
res.Add("ping", "pong");
return res;
}
получаем такой ответ:
{
"data": [
{
"Key": "ping",
"Value": "pong"
}
]
}
а надо: {"data": [{ "ping": "pong"}]} или если короче, то что возвращает JsonConvert.
Стас Гаврилюк,
не решал такого рода задачу, но вот что нагуглил https://stackoverflow.com/questions/17806811/dynamic-objects-in-wcf-not…