這真的屬於@ user18925 38
取正被串行化並以列表(List<Desk>
)由WCF返回的類型,敷在另一種類型的,例如:
[DataContract]
public class retDesks { [DataMember] public List<Desk> destinations; }
現在WCF返回所需的名稱:
{「destinations」: [{「ID」:1,「destinationName」:「reject」,「status」:「FULL」},{「ID」:2, 「destinationName」:「StevesDesk」,「status 「:」OK「}]}
但是您還會注意到Json Desk
對象現在還包含屬性ID
。由於ID
未被[DataMember]
修飾,所以ID
被輸出中的Desk
的定義隱藏起來。
然而,Desk
上的裝飾並不重要,因爲整個Desk
類型在retDesks
有[DataMember] List<Desk>
的情況下被暴露。
那麼你如何處理? 最喜歡快速的建議,使用LINQ篩選出List<Desks>
的屬性,如:
var d1 = _desks.Select(e => new { e.destinationName, e.status });
壞消息這裏是d1
是一個匿名類型的列表。 這是包含List<Desks>
的retDesks
類型的定義所不能接受的。
因此...創建第三個類型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第三方框架。或者,也許只有使用.Net WCF框架的定製Json串行器。
標題與您的問題有何關係? – wkl
你對問題的名稱是正確的。我現在就解決這個問題。不知道從哪裏來。謝謝。 – Steve
@願意不需要手工編輯。 '[{「Name」:「reject」,「status」:「FULL」},{「Name」:「returns」,「status」:「OK」}]'是WCF返回的字符串。逐字節。但問題是沒有包含列表的名稱。 – Steve