我在以下最小代码中遇到了问题:
[Fact]
public void DeserializeKeyValuePair()
{
string text = "{\"offer\": 12432515239}";
KeyValuePair<string, long> test = JsonSerializer.Deserialize<KeyValuePair<string, long>>(text);
}
在 .NET 7 中,这段代码按预期工作。
相反,在 .NET 6 中会抛出一个错误,指出无法转换 keyvaluepair。
System.Text.Json.JsonException :
The JSON value could not be converted to System.Collections.Generic.KeyValuePair`2[System.String,System.Int64].
Path: $.offer | LineNumber: 0 | BytePositionInLine: 9.
很遗憾,由于与另一个重要库不兼容,我无法将我的项目升级到.NET 7。
也许Newtonsoft.Json可以做到这一点,但我正在尽量保持第三方库的最小化。我也很惊讶在互联网上找不到更多关于这个问题的参考。
有没有办法解决这个问题?
更新:
字符串似乎在.NET 7中反序列化为null
,这仍然是意外的。但它不会崩溃。主要目的是从服务器API响应中反序列化字典。
根据Guru Stron的建议,解决方案是安装nuget包。请查看他的答案。