Json.net似乎依赖于$ type作为第一个属性。有没有办法解除这个限制或轻松重新排序我的json?

时间:2013-06-10 21:00:14

标签: serialization json.net

我正在JavaScript中构建多态序列化类型并在.Net中反序列化它们。这工作正常,除非我的“$ type”属性不是第一个属性(Json.net似乎忽略它)。

所以:

{
  "$type" : "...",
  "FirstName" : "Bob"
}

有效(它反序列化为$ type提供的类型),但是:

{
  "FirstName" : "Bob",
  "$type" : "..."
}

有没有办法可以让订单无关紧要,或者是一种简单的方法来获取我的json字符串并修改它,以便我的“$ type”属性始终位于.Net的顶部?换句话说,在我反序列化字符串以重新排序属性以便“$ type”位于顶部之前,我可以使用json.net吗?我不想在JavaScript /序列化方面要求它。

1 个答案:

答案 0 :(得分:5)

更新:使用MetadataPropertyHandling.ReadAhead

http://www.newtonsoft.com/json/help/html/T_Newtonsoft_Json_MetadataPropertyHandling.htm


必须先行。

您可以将JSON加载到JObject中,重新排列属性顺序,以便$ type是第一个属性,然后反序列化。