jtoken判断是否包含键_c# – 从JToken获取可能不存在的值(最佳做法)

什么是检索JSON值的最佳实践,可能甚至不存在于C#使用

Json.NET?

现在我处理一个JSON提供程序,返回JSON有时包含某些键/值对,有时不包含。我一直使用(也许不正确)这个方法来获取我的值(例如获得双):

if(null != jToken["width"])

width = double.Parse(jToken["width"].ToString());

else

width = 100;

现在工作正常,但是当有很多他们很麻烦。我最后写了一个扩展方法,只有写了之后,我不知道是否也许我是愚蠢的…无论如何,这里是扩展方法(我只包括双和字符串的情况,但在现实中,我有很多更多):

public static T GetValue(this JToken jToken, string key,

T defaultValue = default(T))

{

T returnValue = defaultValue;

if (jToken[key] != null)

{

object data = null;

string sData = jToken[key].ToString();

Type type = typeof(T);

if (type is double)

data = double.Parse(sData);

else if (type is string)

data = sData;

if (null == data && type.IsValueType)

throw new ArgumentException("Cannot parse type \"" +

type.FullName + "\" from value \"" + sData + "\"");

returnValue = (T)Convert.ChangeType(data,

type, CultureInfo.InvariantCulture);

}

return returnValue;

}

这里有一个使用扩展方法的例子:

width = jToken.GetValue("width", 100);

BTW,请原谅什么可能是一个真正的愚蠢的问题,因为它似乎应该有一个内置的功能…我试过谷歌和Json.NET文档,但是我没有找到我的问题的解决方案或者在文档中不清楚。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值