【问题标题】:JsonSerializer.Deserialize can't inferred the usageJsonSerializer.Deserialize 无法推断用法
【发布时间】:2020-07-31 08:12:36
【问题描述】:

如果我只向方法传递一个字符串,VS2019 会给出无法推断用法的错误。

如果我这样写

JsonSerializer.Deserialize(text);
JsonSerializer.Deserialize(text.AsSpan());

两者都给出相同的错误。因为字符串可以转换为跨度。

但正如Deserialize Documentation 中提到的,非泛型类型应该可以工作。但我在这里得到的是泛型类型。

Json Fiddle

我尝试用谷歌搜索,但没有得到任何结果。

【问题讨论】:

    标签: c# .net-core jsonserializer


    【解决方案1】:

    您突出显示的方法采用一个类型参数,即保存反序列化数据的 C# 对象的类型。您需要指定类型参数,或者使用将对象类型作为第二个参数的重载:

    using System;
    using System.Text.Json;
    
    namespace ConsoleApp1
    {
        class Data
        {
            public bool Enabled { get; set; }
    
            public override string ToString()
            {
                return Enabled.ToString();
            }
        }
    
        class Program
        {
            static void Main(string[] args)
            {
                String json = "{ \"Enabled\" : true }";
                // Using 2 different overload to deserialize data.
                Data data = JsonSerializer.Deserialize<Data>(json);
                Console.WriteLine(data);
                var data2 = JsonSerializer.Deserialize(json, typeof(Data));
                Console.WriteLine(data2);
            }
        }
    }
    

    【讨论】:

      【解决方案2】:

      您没有调用正确的方法,为了使用非通用方法,您需要在第二个参数中指定类型。

      JsonSerializer.Deserialize(text, typeof(object));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-01
        • 1970-01-01
        相关资源
        最近更新 更多