在 NewtonSoft Json 中将通用布尔值反序列化为对象时出错?
Error in deserializing generic boolean to object in 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; }
}
在反序列化时我得到这个异常:
Error converting value False to type OperationResult`1[System.Boolean]
这是内部异常:
Could not cast or convert from System.Boolean to 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
}
class
public class OperationResult<T>
{
public T Result { get; set; }
public string Error { get; set; }
public bool IsSuccess { get; set; }
}
我知道这种问题已经被问过很多次了,但我真的想不通。我从控制器发送这个对象:
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; }
}
在反序列化时我得到这个异常:
Error converting value False to type OperationResult`1[System.Boolean]
这是内部异常:
Could not cast or convert from System.Boolean to 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
}
class
public class OperationResult<T>
{
public T Result { get; set; }
public string Error { get; set; }
public bool IsSuccess { get; set; }
}