我知道這種型別的問題以前已經被問過很多次了,但我真的想不通。我從控制器發送這個物件:
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 是布爾型別時,我才會收到這個錯誤。
老實說,除了將型別從布林值更改為另一種型別以查看序列化是否有效之外,我還沒有嘗試過任何其他方法。我不知道還能做什么。
uj5u.com熱心網友回復:
我在 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; }
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/332680.html
上一篇:Mongoose更新檔案
