c# - JsonSerializer.Deserialize 无法推断用法
问题描述
如果我只将字符串传递给该方法,VS2019 会给出无法推断用法的错误。
如果我这样写
JsonSerializer.Deserialize(text);
JsonSerializer.Deserialize(text.AsSpan());
两者都给出相同的错误。因为字符串可以转换为跨度。
但正如反序列化文档中所述,非泛型类型应该可以工作。但我在这里得到的是泛型类型。
我试图谷歌但没有导致任何结果。
解决方案
您突出显示的方法采用一个类型参数,即保存反序列化数据的 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);
}
}
}
推荐阅读
- reactjs - ReactJS 列表中的每个孩子都应该有一个唯一的“关键”道具不起作用
- c++ - 如何绘制像 Visual Studio 这样的关闭按钮?
- javascript - 无法从 db 渲染我的对象 - “对象不可迭代”
- android - 如何在flutter中使用存储权限?
- typescript - Vue Ruter 4 没有重载匹配这个调用。重载 1 of 3,给出以下错误
- javascript - 这个 clickHandler() 中的嵌套函数会是什么样子?
- terraform - 地形模块
- r - 用 smooth.spline 过冲
- python - 使用循环查找图中的所有连接节点
- html - CSS中隐藏子div时如何动态调整div的大小?