我正在JavaScript中构建多态序列化类型并在.Net中反序列化它们。这工作正常,除非我的“$ type”属性不是第一个属性(Json.net似乎忽略它)。
所以:
{
"$type" : "...",
"FirstName" : "Bob"
}
有效(它反序列化为$ type提供的类型),但是:
{
"FirstName" : "Bob",
"$type" : "..."
}
不
有没有办法可以让订单无关紧要,或者是一种简单的方法来获取我的json字符串并修改它,以便我的“$ type”属性始终位于.Net的顶部?换句话说,在我反序列化字符串以重新排序属性以便“$ type”位于顶部之前,我可以使用json.net吗?我不想在JavaScript /序列化方面要求它。
答案 0 :(得分:5)
更新:使用MetadataPropertyHandling.ReadAhead
http://www.newtonsoft.com/json/help/html/T_Newtonsoft_Json_MetadataPropertyHandling.htm
必须先行。
您可以将JSON加载到JObject中,重新排列属性顺序,以便$ type是第一个属性,然后反序列化。