使用ConfuserEx时,Newtonsoft JSON反序列化不起作用

时间:2018-09-13 10:52:00

标签: c# json json.net confuserex

我有一个像这样的JSON类:

public class UpdateCheck
{
    public bool UpdatesAvailable { get; set; }
    public string LinkOfNewVersion { get; set; }
}

但是当我使用ConfuserEx混淆程序集时,UpdatesAvailableLinkOfNewVersion的值为null:/

我尝试了以下所有操作:

在我的JSON类上方添加[Obfuscation(Exclude = false, Feature = "-rename")]属性:

[Obfuscation(Exclude = false, Feature = "-rename")]
public class UpdateCheck
{
    public bool UpdatesAvailable { get; set; }
    public string LinkOfNewVersion { get; set; }
}

在我的JSON类上方添加[Serializable]属性:

[Serializable]
public class UpdateCheck
{
    public bool UpdatesAvailable { get; set; }
    public string LinkOfNewVersion { get; set; }
}

在JSON类上方添加两个属性:

[Serializable]
[Obfuscation(Exclude = false, Feature = "-rename")]
public class UpdateCheck
{
    public bool UpdatesAvailable { get; set; }
    public string LinkOfNewVersion { get; set; }
}

但是我尝试过的所有方法都失败了:/

我的混淆属性:

  <rule pattern="true" preset="maximum" inherit="false">
    <protection id="anti ildasm" />
    <protection id="anti tamper" />
    <protection id="constants" />
    <protection id="ctrl flow" />
    <protection id="anti dump" />
    <protection id="anti debug" />
    <protection id="invalid metadata" />
    <protection id="ref proxy" />
    <protection id="resources" />
    <protection id="typescramble" />
    <protection id="rename" />
  </rule>

当我从ConfuserEx配置文件中删除“重命名”保护时,我的程序集会像这样崩溃:Screenshot

任何帮助将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:4)

尝试使用JsonProperty属性将字段名称设置为其固定值:

public class UpdateCheck
{
    [JsonProperty("UpdatesAvailable")]
    public bool UpdatesAvailable { get; set; }

    [JsonProperty("LinkOfNewVersion")]
    public string LinkOfNewVersion { get; set; }
}