如何找出 JsonValue 在 System.Text.Json 中的类型
How to find out what type a JsonValue is in System.Text.Json
因此,当我有一个 JsonNode 时,我可以只询问它是 JsonObject 还是 JsonArray 并使用它们。但是当节点是实际值时,我怎么知道它是字符串、数字还是布尔值?
当然,我可以尝试解析该值,但随后在字符串中传输的数字将变成数字而不是我想避免的字符串。
我正在使用 System.Text.Json 和 .NET 6。
每个 Json属性 都有两个属性 - 类型 Json 元素的名称和值。 JsonElement 有一个名为 ValueKind 的枚举 属性,它可以帮助您确定 JSON 值是什么数据类型。
您可以通过在 Json 元素上调用 .EnumerateObject() 来获取 Json 属性。您可以将 Json 文档作为 Json 元素而不是 Json 对象。
来自 the source, it looks like a JsonValue
just wraps a JsonElement
. So you can do .GetValue<JsonElement>()
(which passes this check), and then inspect its ValueKind
属性.
因此,当我有一个 JsonNode 时,我可以只询问它是 JsonObject 还是 JsonArray 并使用它们。但是当节点是实际值时,我怎么知道它是字符串、数字还是布尔值?
当然,我可以尝试解析该值,但随后在字符串中传输的数字将变成数字而不是我想避免的字符串。
我正在使用 System.Text.Json 和 .NET 6。
每个 Json属性 都有两个属性 - 类型 Json 元素的名称和值。 JsonElement 有一个名为 ValueKind 的枚举 属性,它可以帮助您确定 JSON 值是什么数据类型。
您可以通过在 Json 元素上调用 .EnumerateObject() 来获取 Json 属性。您可以将 Json 文档作为 Json 元素而不是 Json 对象。
来自 the source, it looks like a JsonValue
just wraps a JsonElement
. So you can do .GetValue<JsonElement>()
(which passes this check), and then inspect its ValueKind
属性.