2010-09-17 16 views
1

我在使用WCF的REST服務中返回項目列表(用戶定義的類)。我將這些項目作爲JSON返回,並將其用於某些客戶端JavaScript(因此該類的「架構」是從JavaScript庫所需的派生的)。這個類是相當基本的,字符串和布爾。 bool是可選的,所以如果它不存在,javascript庫使用默認值,如果存在(true或false),則使用該值。WCF REST和JSON - 序列化和空元素

問題是如果我使用bool,當序列化時默認值爲false,如果我使用bool?,則該成員仍然在JSON中發送並默認爲null,從而導致庫問題它不會回退到默認值)。

我知道我可以大概弄亂javascript庫,但我想找到一種方法,只是不發送任何成員,這是null,所以他們不顯示在序列化的JSON中。

任何想法?

+0

「bool」變量是否都是「真」,「假」和「空」有效狀態? – 2010-09-17 02:16:41

+0

真,假和缺席都是有效的,併產生不同的結果。雖然不支持,但如果鍵存在空值,則默認爲false。 – Peter 2010-09-18 01:44:29

+0

請參閱http://stackoverflow.com/questions/5685045/how-to-not-return-null-when-a-data-member-field-is-not-set-in-the-data-contract – 2013-02-06 14:31:15

回答

1

你可以在序列化之前和之後做一些打包和解包。例如: -

  • 你可以做兩個不同版本的類 ,一種帶有一個 沒有布爾,並轉換爲前後 發射 合適。 (發送的數據量最少 ,如果字節#是一個更大的 考慮不是代碼的複雜性)
  • 您可以添加另一個布爾告訴 第一BOOL是否應該 爲空。