【问题标题】:deserializing Keyvaluepair and Dictionary with .net 6使用 .net 6 反序列化键值对和字典
【发布时间】:2023-02-01 00:59:13
【问题描述】:

我对以下最小代码有疑问:

[Fact]
public void DeserializeKeyValuePair()
{
    string text = "{\"offer\": 12432515239}";
    KeyValuePair<string, long> test = JsonSerializer.Deserialize<KeyValuePair<string, long>>(text);
}

在 .net 7 中,此代码按预期工作。
.net 6 依次显示无法转换键值对的错误。

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 可以做到这一点,但我正在努力将第三方库保持在绝对最低限度。我也很惊讶我没有在互联网上找到更多关于这个问题的参考资料。

有没有办法解决这个问题?

【问题讨论】:

标签: c# .net deserialization system.text.json


【解决方案1】:

Dictionary&lt;,&gt;so use Dictionary&lt;string, long&gt;不同,KeyValuePair&lt;,&gt;没有特殊待遇:

KeyValuePair<string, long> test =
    JsonSerializer.Deserialize<Dictionary<string, long>>(text).First();

或者创建一个custom converter

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-10
    • 1970-01-01
    • 1970-01-01
    • 2012-03-31
    相关资源
    最近更新 更多