在反序列化JSON时访问字节流

时间:2018-02-28 04:16:04

标签: c# .net json.net sha

我一直试图找到一种机制,在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会被自动反序列化(这很好),我想念我的机会来计算签名验证的哈希(这很糟糕)。它给我留下了两个选择:

  • 向T添加条件,因此它实现了一些辅助哈希计算的接口。
  • 反序列化在Payload的原始json上执行哈希。

第一个选项听起来不错,直到我意识到我必须对每个类进行序列化的方法,然后它听起来很糟糕。

反序列化计算听起来好多了,并且可以更灵活地计算哈希计算的方式和位置。

到目前为止,问题似乎无法找到允许我在json.net转换过程中访问原始json的任何内容。 json.net是否具备该功能?

在大多数情况下,我希望尽量减少反序列化所需的自定义代码,尽管我已经编写了一些最小的转换器来使json更整洁。

感谢。

0 个答案:

没有答案