我希望对条件值执行switch
语句,目前我的语句如下:
switch (property)
{
case JToken token when (Schemas.IsNumericProperty(token)):
return token.ToObject<int>();
case JToken token when (Schemas.IsStringProperty(token)):
return token.ToObject<string>();
case JToken token when (Schemas.IsCollectionProperty(token)):
return token.ToObject<string[]>();
case JToken token when (Schemas.IsDependencyProperty(token)):
return token.ToObject<KeyValue[]>();
default:
return property.ToObject<object>();
}
但是属性值已经是JToken
了,有没有办法将其清除为短代码?我知道我可以执行一系列if
语句,这可能会更简洁,更有效?
感谢您的帮助!
答案 0 :(得分:1)
我想您会这样搜索
JToken jToken = JToken.Parse("your json");
switch (jToken.Type)
{
case JTokenType.Integer:
return jToken.ToObject<int>();
case JTokenType.String:
return jToken.ToObject<string>();
case JTokenType.Array:
return jToken.ToObject<string[]>();
default:
return jToken.ToObject<object>();
}
JToken.Type
的类型为JTokenType
枚举,使您可以轻松识别令牌的类型。
您可以阅读有关JTokenType Enumeration