如何将 JsonElement 转换为 Int 或其他原始类型

Org*_*gil 1 c# json jsonconvert webapi .net-6.0

我在 .net 6.0 上有 c# webapi。我正在将 postdata 从客户端获取到 param_class 到 _input 中。该类如下:

public class param_class
{
    public string? name { get; set; }
    public object? value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

客户端以 json 字符串形式发送数据,如下所示:

{
    "name": "lotnum",
    "value": 143
}
Run Code Online (Sandbox Code Playgroud)

在 webapi 中,当我获取值字段时,会抛出错误 JsonElement 无法转换为 Int。

var v = (int)_input.value;
Run Code Online (Sandbox Code Playgroud)

如何在.net 6.0的webapi中将JsonElement转换为其他类型?

Iav*_*yov 7

value将类型更改为int,默认反序列化将为您处理此问题。

现在实际发生的情况是,当您拥有object属性的类型时,JsonElement因为这是发送的类型JS。但是,如果您将其更改为预期类型,默认反序列化器知道如何转换为JsonElement您期望的特定类型。(因为JsonElement它本身发送它是什么类型)

当然,您可以选择按如下方式进行后期投射:

var v = ((JsonElement)_input.value).GetInt32();
Run Code Online (Sandbox Code Playgroud)

强烈建议你不要这样做!