JsonSerializer.Deserialize 无法推断用法
JsonSerializer.Deserialize can't inferred the usage
如果我只将字符串传递给该方法,VS2019 会给出无法推断用法的错误。
如果我这样写
JsonSerializer.Deserialize(text);
JsonSerializer.Deserialize(text.AsSpan());
两者都给出相同的错误。因为字符串可以转换为跨度。
但如 Deserialize Documentation 中所述,none 泛型应该可以工作。但我在这里得到的是通用类型。
我尝试 google 但没有得到任何结果。
您没有调用正确的方法,为了使用非通用方法,您需要在第二个参数中指定类型。
JsonSerializer.Deserialize(text, typeof(object));
您突出显示的方法采用一个类型参数,即保存反序列化数据的 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);
}
}
}
如果我只将字符串传递给该方法,VS2019 会给出无法推断用法的错误。
如果我这样写
JsonSerializer.Deserialize(text);
JsonSerializer.Deserialize(text.AsSpan());
两者都给出相同的错误。因为字符串可以转换为跨度。
但如 Deserialize Documentation 中所述,none 泛型应该可以工作。但我在这里得到的是通用类型。
我尝试 google 但没有得到任何结果。
您没有调用正确的方法,为了使用非通用方法,您需要在第二个参数中指定类型。
JsonSerializer.Deserialize(text, typeof(object));
您突出显示的方法采用一个类型参数,即保存反序列化数据的 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);
}
}
}