为了账号安全,请及时绑定邮箱和手机立即绑定

反序列化时如何检查JSON字符串中是否存在属性

反序列化时如何检查JSON字符串中是否存在属性

C#
jeck猫 2022-10-15 14:36:07
我有这个反序列化 JSON 字符串的代码。现在我们可以看到 JSON 字符串具有例如以下属性:(请注意 CORS 属性存在于“has”属性下,因此我们需要在我相信之前检查“has”是否也存在)CORS我的问题是。有时,JSON 字符串中可能会缺少此属性。正如所见,我在使用 try/catch 块的地方使用下面的代码。因为如果缺少 CORS 属性,我会得到一个异常,但异常的性能非常昂贵,现在我在 30 个属性上使用 try/catch 块。然后我想知道如果 CORS 属性首先存在,我们如何检查代码?当 CORS 不存在时,下面的代码行 WITHOUT try/catch 会给出此错误:无法对空引用执行运行时绑定String corsvalue = "";try { corsvalue = deserializedTicker.has.CORS.ToLower(); } catch { }JSON字符串:{   "id": "hello",   "name": "Hello",  "has": {     "CORS": false,    "CORS2": true  },  "has2": {     "CORS3": false,    "CORS4": true  }}完整代码:String JSONstring = "{ \"id\": \"hello\", \"name\": \"Hello\", \"has\": { \"CORS\": false, \"CORS2\": true }, \"has2\": { \"CORS3\": false, \"CORS4\": true } }\";"var deserializedTicker = JsonConvert.DeserializeObject<JsonInfo>(JSONstring);String corsvalue = "";try { corsvalue = deserializedTicker.has.CORS.ToLower(); } catch { }public class JsonInfo {  public string id { get; set; }  public string name { get; set; }  public JsonHasInfo has { get; set; }  public JsonHas2Info has2 { get; set; }}public class JsonHasInfo{  public bool CORS { get; set; }  public bool CORS2 { get; set; }}public class JsonHas2Info{  public bool CORS3 { get; set; }  public bool CORS4 { get; set; }}
查看完整描述

1 回答

?
慕容708150

TA贡献1831条经验 获得超4个赞

干得好:


String JSONstring = "{ \"id\": \"hello\", \"name\": \"Hello\", \"has\": { \"CORS\": false, \"CORS2\": true }, \"has2\": { \"CORS3\": false, \"CORS4\": true }}";


            JObject jobject = JObject.Parse(JSONstring);


            JToken cors = jobject.SelectToken("has.CORS");

            if (cors != null)

            {

                JsonInfo myEvent = jobject.ToObject<JsonInfo>();

            }


查看完整回答
反对 回复 2022-10-15
  • 1 回答
  • 0 关注
  • 152 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号