我正在将代码从.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"];