当前位置: 首页 > 工具软件 > jtoken > 使用案例 >

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

鲜于海
2023-12-01

什么是检索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文档,但是我没有找到我的问题的解决方案或者在文档中不清楚。

 类似资料: