我有这段反序列化JSON字符串的代码。
现在我们可以看到JSON字符串具有以下属性:((请注意,CORS属性存在于“ has”属性下,因此我们需要检查“ has”是否也存在)
CORS
我的问题是。有时确实会发生JSON字符串中缺少此属性的情况。如图所示,我在try / catch块中使用以下代码。因为如果缺少CORS属性,我会收到一个异常,但是异常的性能非常昂贵,现在我对30个属性使用try / catch块。
然后我想知道如何才能通过代码检查CORS属性是否首先存在?当CORS不存在时,在没有try / catch的情况下,下面的代码行给出此错误:
无法对空引用执行运行时绑定
master
JSON字符串:
String corsvalue = "";
try { corsvalue = deserializedTicker.has.CORS.ToLower(); } catch { }
完整代码:
{
"id": "hello",
"name": "Hello",
"has": {
"CORS": false,
"CORS2": true
},
"has2": {
"CORS3": false,
"CORS4": true
}
}
答案 0 :(得分:1)
您在这里:
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>();
}