Это действительно относится к @ user18925 38
Возьмите тот тип, который был сериализации и возвращает WCF в списке (List<Desk>
) и завернуть, что в другом типе, например:
[DataContract]
public class retDesks { [DataMember] public List<Desk> destinations; }
Теперь WCF возвращает нужное имя:
{"destination": [{"ID": 1, "destinationName": "reject", "status": "FULL"}, {"ID": 2, "destinationName": "StevesDesk", "status ":" ОК "}]}
Но вы также заметите, что объект Json Desk
также включает в себя атрибут ID
. До ID
был скрыт с вывода по определению Desk
, потому что ID
не был украшен [DataMember]
.
Теперь, однако, украшения на Desk
не имеют значения, потому что весь тип Desk
выставлен, так как retDesks
имеет [DataMember] List<Desk>
.
Итак, как вы справляетесь с этим? Самым любимым быстро предложение, использовать Linq, чтобы отфильтровать свойства List<Desks>
как в:
var d1 = _desks.Select(e => new { e.destinationName, e.status });
Плохие новости здесь d1
список анонимного типа. Это неприемлемо для определения типа retDesks
, который содержит List<Desks>
.
Итак ... создайте третий тип public deskRet [ public string destinationName; public string status; }
и установите этот тип как список между выводом Linq и экземпляром возвращаемого типа retDesks
.
public class Desk { public int ID; public string destinationName; public string status; }
public class retDesks { [DataMember] public List<deskRet> destinations; }
public class deskRet { public string destinationName; public string status; }
...
List<deskRet> d1 = _desks.Select(e =>
new deskRet{ destinationName=e.destinationName, status=e.status }
).ToList<deskRet>(); // maybe I'm working to hard to guarantee the type. But I'm okay with that
return(new retDesks{ destinations=d1 };
В конце дня у вас есть spec'ed выход:
{ "направления": [{ "destinationName": "отклонять", "статус": "FULL"} { "destinationName": "StevesDesk", "статус": "OK"}]}
Но в следующий раз рассмотрит рамку третьей стороны, как Json.NET. Или, может быть, пользовательский Json Serialzer с использованием. Net WCF Framework.
Как называется заголовок, связанный с вашим вопросом? – wkl
Вы правы в названии вопросов. Я исправлю это прямо сейчас. Не знаю, откуда это взялось. Благодарю. – Steve
@Will No.Не отредактировано вручную. '[{" Name ":" reject "," status ":" FULL "}, {" Name ":" returns "," status ":" OK "}]' - строка WCF возвращается. Байт за байтом. но проблема в том, что в списке нет имени. – Steve