2014-12-02 60 views
3

我需要根據對象的狀態生成「字符串」鍵。我想到將對象序列化爲JSON並將結果用作關鍵字。這隻有在JSON.Net總是以相同的方式連續化時纔有效。JSON.Net是否保證始終以相同的方式序列化?

JSON.Net是否保證在同一臺機器上以相同的方式序列化,如果遇到同一個類的相同類的對象?

+1

它在我的測試中看起來是一樣的......但這可能是巧合。我喜歡確定,這就是爲什麼我要問社區。希望有人知道如果訂單是由JSON.Net框架確保的。 – 2014-12-02 08:56:39

+5

@Jamiec測試*保證*是不可能的,不簡單。 – CodesInChaos 2014-12-02 08:58:15

+0

@Jamiec,特別是當涉及反思時,保證更難以測試。我曾經使用過一個使用反射將類映射到平面文件的庫(而不是Json.Net),並且有99.9%的時間,它可以正常工作,但隨後它會隨機地破壞文件,因爲反射不能保證其順序例如PropertyInfo被返回,雖然圖書館經歷了一些相當詳細的攻擊,試圖彌補這一點(即使用Reflection api來修改Reflection api的私有成員!),但它並不總是能夠正確地進行補償。所以絕對值得問。 – Nathan 2015-10-01 20:25:33

回答

4

是的,否則單元測試會失敗。

如果您想明確說明訂單,那麼JsonPropertyAttribute上有一個Order屬性。

+1

令人驚歎!感謝詹姆斯的反應! – 2014-12-02 09:18:28

相關問題