C# 迁移到 Core,如何检索 System.Text.Json.JsonNode 元素,这样我就不必使用 .ToString()?



我正在将代码从.Net Framework迁移到Core,在不讨论我想这么做的原因的情况下,我只会保持简单,专注于我想做的事情。

假设我有一个jsonString,它包含"名称";。我用解析字符串

JsonNode jn = JsonNode.Parse(jsonString);

和获得价值:

string name = jn["Name"].ToString();

我如何重写、扩展等等,这样我就不必使用.ToString((部分并检索JsonNode元素值,比如:

string name = jn["Name"];

不能也不应该这样做是有原因的:JsonNode可以表示任何类型的值。你需要明确。

为清晰起见进行编辑隐式转换类似

string name = jn["Name"];

而显式转换是

string name = (string)jn["Name"];

JsonNode没有隐式到字符串的转换。但有一个明确的问题。

注意:没有办法用额外的运算符来扩展类。您需要编辑源(这是个坏主意(。所以你想要的是不可能的。

我可以建议一个更稳健的方法吗?定义一个类型并反序列化:

public record MyData(string Name);
var data = JsonSerializer.Deserialize<MyData>(jsonString);
var name = data.Name;

或者你也可以试试"老好人";字符串词典";方法

var data = JsonSerializer.Deserialize<Dictionary<string,string>>(jsonString);
var name = data["Name"];

相关内容

最新更新