JObject对象如何获取深度属性值&不判断key是否存在获取值&am
发布时间:2020-12-16 08:58:10 所属栏目:asp.Net 来源:网络整理
导读:前言:我们有时常会用到JObject对象接受数据,并通过JObject快速获取指定key的值,顺序的话是没有问题的,但是假如你遇到如下的JObject对象,该怎么快速获取数据呢? { "details" : { "threeds2.fingerprint": "123" }, "paymentData": "456" } ? 正常情况下
前言:我们有时常会用到JObject对象接受数据,并通过JObject快速获取指定key的值,顺序的话是没有问题的,但是假如你遇到如下的JObject对象,该怎么快速获取数据呢? { "details": { "threeds2.fingerprint": "123" },"paymentData": "456" } ? 正常情况下,你如果想获取键:threeds2.fingerprint的值,是怎么获取的? 如下: JObject jobj=Newtonsoft.Json.JsonConvert.DeserializeObject<Newtonsoft.Json.Linq.JObject>(str); string finger=jobj["details"][threeds2.fingerprint"]; 但是这样写是存在风险的。? 第一,我们没有加任何key的判断,容易报异常,那么换一种写法: Newtonsoft.Json.Linq.JObject jobj = Newtonsoft.Json.JsonConvert.DeserializeObject<Newtonsoft.Json.Linq.JObject>(str); if (jobj.ContainsKey(")) { Newtonsoft.Json.Linq.JToken jtoken = jobj[]; if (jtoken.Value<string>(threeds2.challengeResult")!=null) { string finger = jtoken[].ToString(); } } 为了不报异常,加了各种判断,这样也不太好,最好的方案如下: jobj.SelectToken(details.['threeds2.fingerprint']")).Value<string>(); 划重点:这里需要注意: SelectToken方法支持我们输入深度Key的访问路径来获取数据,父子级使用"."连接;如果遇到key含有特殊符号点的,使用中括号加单引号包裹。而且这种写法不会抛出异常,如果路径错误或不存在返回值为null。 ? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc-3 – 为什么两个类,视图模型和域模型?
- asp.net-mvc – 具有不同Http方法的RESTful控制器,但是相同
- asp.net-mvc – ASP.NET MVC 4移动显示模式停止工作
- 成员资格 – 如何在ASP.NET中将用户与其各自的文件夹连接起
- 如何从ASP.NET Web API返回已排序的字典
- asp.net-mvc – 处理ASP.NET MVC中的路由错误
- asp.net-mvc – ASP.NET MVC 3绑定确保表单值优先
- asp.net-mvc-3 – MVC3 – 使用ViewModel插入 – 对象引用未
- asp.net – TransactionScope是否需要DTC服务?
- asp.net-mvc-3 – 使用Windows身份验证获取WCF中当前正在交
推荐文章
站长推荐
- 无法在ASP.NET C#项目中保存条形码生成的图像
- asp.net – ‘response.clear()’删除内容和标题
- 验证 – ASP.Net MVC3电子邮件/电话数据注释不起
- asp.net – “读取XML数据时已超出”最大字符串内
- asp.net – MVC3 Partial View需要一个控制器,但
- asp.net-mvc-4 – 如何在服务器上安装ASP.NET MV
- asp.net-mvc-3 – 带有附加HTML的MVC3 Html.Begi
- ASP.NET:将DataTable呈现到字符串(HTML)的最短方
- asp.net-mvc – 使用MvcContrib TestHelper断言不
- asp.net-mvc – 如何确定视图是否为ASP.NET MVC中
热点阅读