4

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

所以:

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

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

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

没有。

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

4

1 回答 1

6

更新:使用MetadataPropertyHandling.ReadAhead

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


它必须是第一个。

您可以将 JSON 加载到 JObject 中,重新排列属性顺序,使 $type 成为第一个属性,然后对其进行反序列化。

于 2013-06-11T03:31:52.940 回答