Я работаю над самообслуживанием rest api, используемым для контроля состояния нескольких серверов.Building json response
мне было поручено, что, когда все работает правильно, я должен вернуться только
{"response":"ok"}
Но, когда есть ошибка на запрашиваемом сервере или серверах, я должен вернуться
{ "response" : [ {"agent":"<server>:<port>","port":"<port>" ,"Error":"<Description of the error>"} ] }
I подумывал о создании вспомогательного класса для создания объекта по этой схеме и возвращения их по остальной части api
public class HelperErrorResponseClass
{
public string agent { get; set; }
public string port { get; set; }
public string Error { get; set; }
}
Это не проблема, проблема в том, как бороться, когда все в порядке. У меня есть этот ответ Api вспомогательный класс
public class Response
{
public string response { get; set; }
}
Но я вижу, что мне нужно изменить свойство ответа на List<HelperErrorResponseClass>
для того, чтобы отправить ошибочный ответ. Считаете ли вы, что если я строю объект List<HelperErrorResponseClass>
с Json.Net, он будет возвращен в желаемом формате?
Редактировать: Забыл добавить это, I-m используя веб-Api для создания службы отдыха.
UDPATE:
После дальнейших исследований, я нашел способ решить эту проблему.
После this post, я был в состоянии переписать вспомогательные классы как этот
[DataContract]
[KnownType(typeof(List<HelperErrorResponseClass>))]
public class Response
{
[DataMember]
public object response { get; set; }
}
[DataContract]
public class HelperErrorResponseClass
{
[DataMember(EmitDefaultValue = false)]
public string agent { get; set; }
[DataMember(EmitDefaultValue = false)]
public string port { get; set; }
[DataMember(EmitDefaultValue = false)]
public string error { get; set; }
}
Эту работу, чтобы выполнить мои и нуждается мой клиент ... для одной маленькой вещи, за исключением. Когда я получаю результат из списка, и учитывая, что я добавил KnownTypes
директивы, мой ответ сейчас это
{"response":[{"__type":"HelperErrorResponseClass:#AppCommonLib","Error":"ERROR","InstanceId":"<InstanceId> : <Port>","PortType":"<PortType>"},{"__type":"HelperErrorResponseClass:#AppCommonLib","Error":"ERROR","InstanceId":"<InstanceId> : <Port>","PortType":"<PortType>"}]}
Любой идея, как избавиться от этой __type
имущества ответа? что он должен быть явным, чтобы возвращать объявленные свойства класса-помощника?
Я не использовал Json.Net, но он должен иметь возможность правильно форматировать список. Что вы не можете попробовать и посмотреть? Я использую ServiceStack.Text, и он отлично работает. –
@ RacilHilan, попробуй. Я опубликовал эти минуты, прежде чем я вышел из офиса, и хотел узнать ваше мнение, прежде всего, о том, что вы делаете в – CJLopez