使用 Json.NET ,我看到 native 类型到 JToken
的所有转换都是隐式的,但是从 JToken
的转换是显式的.
我的动机是避免在 if
语句、方法调用等中进行显式转换。例如,如果最后一个 if
没有抛出:
string dummyJson = @"{'ShouldDoStuff': true}";
dynamic parsed = JValue.Parse(dummyJson);
// Works:
bool explicitShouldDoStuff = parsed.ShouldDoStuff;
// Also works:
if ((bool)parsed.ShouldDoStuff)
Console.WriteLine("Hooray, there's a rosebush?");
// Throws RuntimeBinderException: Cannot implicitly convert type 'Newtonsoft.Json.Linq.JValue' to 'bool'
if (parsed.ShouldDoStuff)
Console.WriteLine("Die you gravy-sucking pigs");
有没有一种方法可以使从 JToken
到 native 类型的转换也隐式进行?
最佳答案
使用显式运算符的原因是隐式运算符会导致各种问题。所以,不,你不能这样做,这是设计使然。
但是,除了显式转换之外,您还可以获取 Value
属性:
if (parsed.ShouldDoStuff.Value)
Console.WriteLine("Die you gravy-sucking pigs");
我认为它比类型转换更干净。
关于c# - 从 Json.NET 中的 JToken 隐式转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21401869/