解决“无法从 System.String 强制转换或转换为 Class 对象”错误

解决“无法从 System.String 强制转换或转换为 Class 对象”错误

在进行 API 自动化时,我必须反序列化响应以解析 API 响应数据。我们使用 Newtonsoft.Json NuGet 来实现这一点。

我在反序列化过程中遇到以下错误 -

Newtonsoft.Json.JsonSerializationException

  HResult=0x80131500

  消息 = 将值“{“Id”:“92209”,“operatorId”:“100000”,“acctId”:“1000”,“status”:“true}”转换为类型“模型”时出错。路径'',第 1 行,位置 726。

  来源=Newtonsoft.Json

  堆栈跟踪:

   在 Newtonsoft.Json.Serialization.JsonSerializerInternalReader.EnsureType(JsonReader 阅读器、对象值、CultureInfo 文化、JsonContract 契约、Type targetType)

   在 Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader 阅读器,类型 objectType,布尔值 checkAdditionalContent)

   在 Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader,类型 objectType)

   在 Newtonsoft.Json.JsonConvert.DeserializeObject(字符串值,类型类型,JsonSerializerSettings 设置)

   在 Newtonsoft.Json.JsonConvert.DeserializeObject[T](字符串值,JsonSerializerSettings 设置)

   在 C:\CommonLibraries\CommonLibrary.cs 中的 CommonLibraries.CommonLibrary.GetResponseBodyDictionary(RestResponse response,Int32 statusCode):第 35 行

   在 C:\Tests.cs 中的 Test(String id、String TestDescription、Int32 statusCode、String TemplateId) 处:第 108 行

 内部异常 1:

ArgumentException:无法从 System.String 强制转换或转换为 Model。

最初的想法是——

  • Json 响应的格式不正确
  • 并非所有属性都包含在 Json 中。

但原因并非如此。

经过多次谷歌搜索后,尝试 –

  • 修剪 Json 内容
  • 替换转义字符
  • Html 解码 Json。

这些都不起作用。

最后,这篇 StackOverflow 帖子帮助解决了这个问题。看起来我正在反序列化的内容被序列化了多次,我不得不将其反序列化为字符串,然后再次反序列化为模型来解决问题。下面的代码对我有用。

1

2

3
var content = response.Content;                          

var jsonResult = JsonConvert.DeserializeObject(content).ToString();

var result= JsonConvert.DeserializeObject<Model>(jsonResult);

这里的内容类似于“\”{\\”Id\\”:\\”92209\\”,\\”operatorId\\”:100000,\\”Status\\”:true}”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Joyond

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值