使用Json.NET检索C#中甚至可能不存在的JSON值的最佳实践是什么?
现在我正在处理一个JSON提供程序,它返回有时包含某些键/值对的JSON,有时则不然.我一直在使用(也许是错误的)这个方法来获取我的值(例如获得一个double):
if(null != jToken["width"])
width = double.Parse(jToken["width"].ToString());
else
width = 100;
Run Code Online (Sandbox Code Playgroud)
现在它工作正常,但是当它们很多时它很麻烦.我最后编写了一个扩展方法,并且只有在写完之后我才会想知道是否我是愚蠢的......反正这里是扩展方法(我只包括双和字符串的情况,但实际上我有很多更多):
public static T GetValue<T>(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 \"" …Run Code Online (Sandbox Code Playgroud) 我正在使用Newtonsoft Json.net来解析JSON字符串.我将字符串转换为JObject.当通过键访问元素的值时,我希望比较是不区分大小写的.在下面的代码中,我使用"FROM"作为键.我希望它在行json ["FROM"]返回字符串"1".ToString().但它失败了.是否可以使下面的代码工作?
String ptString = "{from: 1, to: 3}";
var json = (JObject)JsonConvert.DeserializeObject(ptString);
String f = json["FROM"].ToString();
Run Code Online (Sandbox Code Playgroud)