Newtonsoft.Json.JsonSerializationException在反序列化JSON响应C#
问题描述:
我创建C#应用程序,它会从Web服务的响应,并将它作为DTO对象像Newtonsoft.Json.JsonSerializationException在反序列化JSON响应C#
List<Models.iLabDTO.RootObject> response = new List<Models.iLabDTO.RootObject>();
public async Task<IHttpActionResult> Get()
{
......
var request_returnDataObj = JsonConvert.DeserializeObject<Models.iLabDTO.RootObject>(responsefile);
response.Add(request_returnDataObj);
}
return Ok(response);
列表中,但它抛出错误,如
<Error>
<Message>An error has occurred.</Message>
<ExceptionMessage>
Error converting value "on" to type 'System.Boolean'. Path
'il_response.c_forms[0].fields[0].required', line 1, position 354.
</ExceptionMessage>
<ExceptionType>Newtonsoft.Json.JsonSerializationException</ExceptionType>
如果我只是return OK(response)
没有使用response.Add(request_returnDataObj)
它工作正常。但我无法返回对象
答
的列表中的错误表示,它试图转换“的”一个布尔值,它不能做的。我只能猜测它是一个“开”或“关”的字段,因此是布尔字段。
如果你有数据的控制,你可能想将其更改为真假。除此之外,你必须编写一个JASON转换器,但是当你使用转换器进行反序列化时,它会将所有开启和关闭视为布尔类型。这可能是一个问题,取决于你在做什么。
我有一个类似的问题here你可以看看。最后,在最后一个答案中,我将一些运行代码与一个如何实现的例子进行了粘贴。您可以剪切并粘贴到控制台程序中并进行测试。
我希望有帮助。
看起来它的'il_response.c_forms [0] .fields [0] .required'的值有问题,因为它的值是“on”,比如“true”。如果你想用boolean标志打开和关闭,你需要有一个JsonConverter类的自定义实现。看到这里,https://stackoverflow.com/questions/14524669/how-to-get-newtonsoft-to-deserialize-yes-and-no-to-boolean – Bearcat9425
可能相关:https://stackoverflow.com/questions/ 6284936 /为什么是一个复选框发布一个值的 –
如果添加更多的信息,它会更容易帮助。似乎发送你的'变种响应=新列表();'回服务器包含包含值'on'而不是TRUE;或'FALSE'因此消息'”的属性打开“键入'System.Boolean''。 'RootObject'的属性和类型是什么?如果你看看回应并比较属性和值,你会发现更多。 –
surfmuggle