【发布时间】:2014-12-02 08:54:12
【问题描述】:
我需要根据对象的状态生成一个“字符串”键。我想将对象序列化为 JSON 并将结果用作键。这仅适用于 JSON.Net 始终以相同方式序列化的情况。
如果遇到具有相同状态的同一类的对象,JSON.Net是否保证在同一台机器上以相同的方式序列化?
【问题讨论】:
-
在我的测试中看起来一样...但这可能是巧合。我想确定,这就是我问社区的原因。希望有人知道 JSON.Net 框架是否确保了订单。
-
@Jamiec 测试保证是不可能的,并不简单。
-
@Jamiec,尤其是在涉及反射时,保证更难测试。我曾经使用过一个库(不是 Json.Net),它使用反射将类映射到平面文件,并且 99.9% 的时间,它可以正常工作,但是它会随机损坏文件,因为反射不能保证例如PropertyInfo 被返回,尽管库经历了一些非常复杂的黑客攻击来尝试弥补这一点(甚至使用反射 api 来修改反射 api 的私有成员!),但它并不总是成功地正确补偿。所以绝对值得一问。
标签: c# .net serialization json.net