在 NewtonSoft Json 中將通用布爾值反序列化為對象時出錯?

丹尼爾

我知道這種類型的問題以前已經被問過很多次了,但我真的想不通。我從控制器發送這個對象:

OperationResult<bool>()
{
   IsSuccess = true,
   Result = default,
   Error = null
};

我在前端收到這個 json 字符串:

'{"result":false,"error":null,"isSuccess":true}'

我嘗試像這樣反序列化它:

var result = JsonConvert.DeserializeObject<OperationResult<R>>(jsonstring);

這是我試圖將 json 反序列化為的對像類型:

    public class OperationResult<R>
    {
        public OperationResult()
        {
        }

        public R Result { get; set; }
        public string Error { get; set; }
        public bool IsSuccess { get; set; } 
    }

在反序列化我得到這個例外:

錯誤將值 False 轉換為類型 OperationResult`1[System.Boolean]

這是內部異常:

無法從 System.Boolean 強制轉換或轉換為 OperationResult`1[System.Boolean]。

奇怪的是,只有當 R 是布爾類型時,我才會收到這個錯誤。

老實說,除了將類型從布爾值更改為另一種類型以查看序列化是否有效之外,我還沒有嘗試過任何其他方法。我不知道還能做什麼。

嗶嘰

我在 VS 中測試了你的代碼,一切正常,沒問題

static void Main()
{
    var json="{\"result\":false,\"error\":null,\"isSucces\":true}";
    var result = JsonConvert.DeserializeObject<OperationResult<bool>>(json);
    json = JsonConvert.SerializeObject(result, Newtonsoft.Json.Formatting.Indented);
}

結果

{
  "Result": false,
  "Error": null,
  "IsSuccess": false
}

班級

public class OperationResult<T>
{
    public T Result { get; set; }
    public string Error { get; set; }
    public bool IsSuccess { get; set; }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章