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