我一直试图找到一种机制,在json.net中对字段进行反序列化时提供对原始json的访问。我的班级是这样的:
public class Message {
public Signature Signature { get; set; }
public string Payload { get; set; }
}
目前这已序列化为:
{
"$type": "SignedMessage",
"Signature": {
// Signature details here
},
"Payload": "{\"$type\": \"Foo\", \"value\":\"Bar\" }"
}
有效负载本身是json,目前必须在先前的序列化步骤中生成,相反必须在后面的单独步骤中反序列化,这也意味着生成的json特别干净,因为它被封装在外包装。当前的安排允许我对Payload进行散列,这样我就可以生成签名或验证现有签名。
我希望能够使消息通用:
public class Message<T> {
public Signature Signature { get; set; }
public <T> Payload { get; set; }
}
我当然可以做,但Payload会被自动反序列化(这很好),我想念我的机会来计算签名验证的哈希(这很糟糕)。它给我留下了两个选择:
第一个选项听起来不错,直到我意识到我必须对每个类进行序列化的方法,然后它听起来很糟糕。
反序列化计算听起来好多了,并且可以更灵活地计算哈希计算的方式和位置。
到目前为止,问题似乎无法找到允许我在json.net转换过程中访问原始json的任何内容。 json.net是否具备该功能?
在大多数情况下,我希望尽量减少反序列化所需的自定义代码,尽管我已经编写了一些最小的转换器来使json更整洁。
感谢。